社区
Java SE
帖子详情
动态编译如何设定classpath?
moon_pang
2006-11-06 02:54:17
需要动态编译的代码中import了第三方的jar
执行javac.compile(String[])方法时报“软件包 org.apache.axis.description 不存在”
但是此jar包已经在工程中被导入了
请教各位,如何使动态编译使用当前的运行环境的classpath呢?
...全文
426
17
打赏
收藏
动态编译如何设定classpath?
需要动态编译的代码中import了第三方的jar 执行javac.compile(String[])方法时报“软件包 org.apache.axis.description 不存在” 但是此jar包已经在工程中被导入了 请教各位,如何使动态编译使用当前的运行环境的classpath呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
moon_pang
2006-11-09
打赏
举报
回复
To dunne:
直接把调用方法的代码copy过来了
忘了前边定义的一句
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main()
具体的情况写在下边的帖子里了,包括被编译的文件、编译的代码等等,麻烦大家帮忙看一下
http://community.csdn.net/Expert/topic/5140/5140236.xml?temp=.8748133
dunne
2006-11-08
打赏
举报
回复
com.sun.tools.javac.Main.compile(String[] args)
这里的args和手动执行javac的参数是一样的
例如:
javac -encoding GBK -classpath "c:\\myclass;c:\\abc.jar" Test.java
就等于
String args[] = {"-encoding", "GBK", "-classpath", "c:\\myclass;c:\\abc.jar", "Test.java"};
com.sun.tools.javac.Main.compile(args);
dunne
2006-11-08
打赏
举报
回复
搂主,你是不是写错了
javac.compile
有这个方法吗?
只有
com.sun.tools.javac.Main.compile(String[])
这个方法
StringBuilder classPath = new StringBuilder();
//定义编译时的路径
classPath.append("c:\\myclasss");
//定义编译时的lib
classPath.append(java.io.File.pathSeparatorChar).append("c:\\abc.jar");
//需要编译的java文件
File javaFile = new javaFile("c:\\Test.java");
//开始编译
String args[] = {"-cp", classPath.toString(), javaFile.getAbsolutePath()};
int rs = com.sun.tools.javac.Main.compile(args);
if (rs != 0) {
//编译发生错误!!
}
moon_pang
2006-11-07
打赏
举报
回复
第三方的类库在我的工程代码中放在了lib目录下
打出的plugin的jar包中,第三方类库也打入了lib目录下
在MANIFEST中的Bundle-ClassPath里,用到的jar文件也都写了相对路径(包括lib/tools.jar和lib/MyJar.jar)
不知为什么就是不行啊
zxcwillzxc
2006-11-06
打赏
举报
回复
在MANIFEST文件中加入属性
Class-Path:为相对路径的类库(.jar)位置,用空格分离
注:第三方类库不在你自己打包里的情况下
moon_pang
2006-11-06
打赏
举报
回复
那个,我没QQ的,不好意思
千里冰封820
2006-11-06
打赏
举报
回复
帮楼主顶一下
angelleecash
2006-11-06
打赏
举报
回复
我的QQ :
308720472
讨论一下
angelleecash
2006-11-06
打赏
举报
回复
确认MANIFEST中的Class-Path: 属性没有写错?我在我的机器上面写了一个例子正确运行的
moon_pang
2006-11-06
打赏
举报
回复
谢谢楼上诸位
我的tools.jar是打到了插件的jar包中的
我现在的问题不是无法调用compile的方法
而是在我自动生成的代码中调用了第三方的jar包
虽然这个第三方的jar包也被我打入了插件的jar文件中
但是在动态编译的过程中并未找到这个第三方的jar及里面的类
所以对自动生成的代码编译不成功,报“软件包不存在”的错误
angelleecash
2006-11-06
打赏
举报
回复
我试过了,我的解决办法是把tools.jar打进JAR包,因为实际你的运行环境中这个包不一定包含,你要确定你的程序可以运行,就必须提供运行需要的环境
zhuixun5506
2006-11-06
打赏
举报
回复
java.lang.Rundime().exec(“SET CLASSPATH=%CLASSPATH%;C:\MyJar.jar”); 不知能行不,没用过,
moon_pang
2006-11-06
打赏
举报
回复
不是现有代码
而是由程序自动生成的代码
通过调用“import com.sun.tools.javac.Main”类的compile方法进行动态编译
angelleecash
2006-11-06
打赏
举报
回复
不知道楼主的所谓动态编译指的是什么,你要在程序的运行环境中重新编译现有的代码吗?
moon_pang
2006-11-06
打赏
举报
回复
1.我是eclipse插件中动态生成的代码,需要进行动态编译,所以不被允许去设定系统的classpath
2.怎么在动态编译中执行“SET CLASSPATH=%CLASSPATH%;C:\MyJar.jar”?
我知道可以在javac.compile()中可以传入classpath,但需要制定位置,而我只想将运行环境的classpath传给动态编译器,怎么做?
lianhg
2006-11-06
打赏
举报
回复
SET CLASSPATH=%CLASSPATH%;C:\MyJar.jar
graybaby
2006-11-06
打赏
举报
回复
在系统环境变量的classpath中添加第三方的jar文件
java
动态
设置
classpath
_Java中设置
classpath
、path、JAVA_HOME的作用
hinking in Java对
classpath
作用的解释Java 解释器的工作程序如下:首先,它找到环境变量
CLASSPATH
(将Java 或者具有Java 解释能力的工具——如浏览器——安装到机器中时,通过操作系统进行
设定
)。
CLASSPATH
包含了一...
Java中JDK为何要配Path和
ClassPath
?
一个x.java文件要想被运行,首先要被javac.exe
编译
生成字节码文件 ----> x.class文件 然后JDK中的Java命令运行此x.class文件,java代码就可以被执行。 2.为什么要配置Path? 平时使用cmd运行JDK中的命令时,只能在...
Java中令人困惑的
classpath
和jar到底是什么鬼?
Java中令人困惑的
classpath
和jar到底是什么鬼?...到底什么是
classpath
?
classpath
是JVM用到的一个环境变量,它用来指示JVM如何搜索class。 因为Java是
编译
型语言,源码文件是.java,而
编译
后的.class文件才是
CLASSPATH
和jar
到底什么是
classpath
?
classpath
是JVM用到的一个环境变量,它用来指示JVM如何搜索class。 因为Java是
编译
型语言,源码文件是.java,而
编译
后的.class文件才是真正可以被JVM执行的字节码。因此,JVM需要知道,如果要...
java之
classpath
设置
java之
classpath
设置
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章