Studio利用hbm配置文件生成SQL文件时,需要访问ST项目中生成的POJO类,所以要把代码生成器(org.st.studio.generator.SqlGenerator)放在ST项目中进行加载,方法如下:
-
把要放在项目中加载和运行的类(org.st.studio.generator.SqlGenerator)的.class文件打包到一个studio.jar文件。其中org.st.studio.generator.SqlGenerator是一个包含public static void main(String[] args)可以作为Java Application运行的类。
public class SqlGenerator {
/**
* @param args 包括3个参数:
* <li>第一个参数: hbm文件的路径,各文件路径之间用“#”分隔
* <li>第二个参数:输出文件目录
* <li>第三个参数:输出文件路径
*
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
if (args == null || args.length != 3)
return;
Configuration cfg = new Configuration();
cfg.getProperties().put("hibernate.dialect",
"org.hibernate.dialect.Oracle9Dialect");
String hbmPaths = args[0];
StringTokenizer st = new StringTokenizer(hbmPaths, "#");
while (st.hasMoreElements()) {
String path = st.nextElement().toString();
File file = new File(path);
if(file.exists()){
cfg.addFile(file);
}
}
SchemaExport se = new SchemaExport(cfg);
File dir = new File(args[1]);
//确保所有的父文件夹都存在
File temp = dir;
while(!temp.getParentFile().getName().equals("") ){//父文件夹不是磁盘驱动器
temp = temp.getParentFile();
if(!temp.exists()){
temp.mkdir();
}
}
if(!dir.exists() ){
dir.mkdir();
}
if( dir.exists() && dir.isDirectory()){
File file = new File(args[2]);
se.setOutputFile(args[2]);
}
se.execute(true, false, false, false);
}
}
- 通过某个触发点在ST项目中加载或删除studio.jar文件。在Studio中是通过org.eclipse.wst.common.project.facet.core.facets扩展点,在给ST项目添加facet时,添加org.st.studio.project.stnature、org.springframework.ide.eclipse.core.springnature(修改.project文件),同时也添加jar包(修改.classpath文件)。
/**
* 在项目的classpath中添加studio.jar包
* @param javaProject
*/
private void addExtenalJar(IJavaProject javaProject) {
try {
IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
IClasspathEntry entry = JavaCore.newLibraryEntry(
new Path(getJarPath()), null, null);
IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
newEntries[oldEntries.length]=entry;
javaProject.setRawClasspath(newEntries, null);
} catch (JavaModelException e) {
e.printStackTrace();
}
}
/**
* @return 返回studio.jar的路径
*/
private String getJarPath() {
URL url = Platform.getBundle(SpringUIPlugin.PLUGIN_ID).getEntry(STUDIO_ JAR);
try {
return FileLocator.toFileURL(url).getFile();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 从项目的classpath中删除studio.jar包
* @param javaProject
*/
private void removeExtenalJar(IJavaProject javaProject){
try {
IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
List<IClasspathEntry> list=new ArrayList<IClasspathEntry>();
for(IClasspathEntry entry:oldEntries){
if(!(entry.getEntryKind()==IClasspathEntry.CPE_LIBRARY && STUDIO_JAR.equals(entry.getPath().toFile().getName())) ){
list.add(entry);
}
}
IClasspathEntry[] newEntries =(IClasspathEntry[])list.toArray(new IClasspathEntry[]{});
javaProject.setRawClasspath(newEntries, null);
} catch (JavaModelException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
这段代码实现了一个简单的购物车类ShoppingCart,其中使用了Java的类加载和类路径机制。在类的构造方法中,首先通过类加载器将购物车类加载到JVM中,然后创建了一个Map对象来存储购物车中的商品及其数量。接着实现了...
反射,动态加载指定类调用类中的方法 简单例子
本篇文章介绍了,java中获取类加载路径和项目根路径的5种方式分析。需要的朋友参考下
Java 语言是一种具有动态... class 文件放到 Java 的路径当中, 等到下次该 Java 虚拟机器重新激活时,这个逻辑上的 Java 应用程序就会因为加载了新修改的 .class 文件,自己的功能也做了更新,这就是 Java 的动态性。
利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
1.JAVAHOME就是安装目录.用在 PATH,CLASSPATH的设置中免去了你再写一长串的路径,用JAVAHOME就代替安装目录....3.CLASSPATH该变量是JAVA加载类(class or lib)的路径.只有在classpath设置的路径中的类才能被加载.
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
文件为压缩包,包括多个java识别图片文字的项目,国内网站上资料比较少,项目都整理出了测试类及说明,都包含着源代码及jar包、安装包、训练库。希望用得到的人少走弯路,资源都精心整理测试过,高分是必须的。 java...
1、下载jdk...classpath:java加载类路径,只有类在classpath中java命令才能识别,在路径前加了个"."表示当前路径。 path:系统在任何路径下都可以识别java,javac命令。
简要介绍 JAVA CLASS文件加密工具是一款专门为保护您的JAVA源代码而设计的软件。传统的JAVA代码保护方式通常是扰乱生成的CLASS文件,从而降低反编译生成的源代码的可读性;有的保护工具甚至能生成部分废代码...
java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 ...
*1.创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 ...创建DynamicClassLoader来加载类 ,defineClass这个方法
java毕业设计项目叮当书城项目|叮当书城项目部署代码视频教程带源码(|java练手项目) 项目文件代码介绍部分内容: 1、首先就是src下面的java文件,存放的是我们后端需要的文件 2、 然后下面的bean文件,里面...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...
JBoss Modules 是模块化的类加载系统。...换句话说,就是加载所有 JARs 到一个平滑的类路径,每个库都是一个模块。JBoss Modules 实现一个线程安全,快速,高并发委托类加载器模型。 标签:JBoss
使用java.util.ServiceLoader示例Spring Boot应用程序在类路径上动态加载所有实现。 多项目Gradle构建 1个Spring Boot应用 1个SPI项目 2个SPI实施项目 有关java.util.ServiceLoader用法,请参见app/src/test/java/...
java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 ...