我试图使用JavaCompiler进行类:
- http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html
当我打电话ToolProvider.getSystemJavaCompiler()返回null。
我想这是因为我使用的是JRE,而不是JDK。
问题是我希望它在所有平台上,无论天气运行用户使用JRE或JDK。
如果有人知道如何解决这个问题,或者另一种方法使用,请发表评论。
任何帮助,将不胜感激。
我试图使用JavaCompiler进行类:
当我打电话ToolProvider.getSystemJavaCompiler()返回null。
我想这是因为我使用的是JRE,而不是JDK。
问题是我希望它在所有平台上,无论天气运行用户使用JRE或JDK。
如果有人知道如何解决这个问题,或者另一种方法使用,请发表评论。
任何帮助,将不胜感激。
ToolProvider.getSystemJavaCompiler()不可用。
是的tools.jar从classpath缺少什么?
Set class path to the tools.jar
文件可以在JDK \ jre目录中。
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_02");
这里是如何运行你的应用程序的Java编译器时,有没有安装JDK。
首先,包括从你的Java应用程序JDK的tools.jar文件和tools.jar放到CLASSPATH中。 甲骨文可能会不喜欢你这样做。 但是,有法律的变通。 你从openjdk.org(OpenJDK的)提供的免费的JDK tools.jar文件,红帽(IcedTea项目),或Azul系统(祖鲁语)。
接着,代替使用ToolProvider.getSystemJavaCompiler()和JavaCompiler进行类,调用位于的tools.jar直接编译器。 下面是代码片段:
String classpath = ...; // make sure tools.jar is in this path
String sourcepath = ...; // path to your sources
String putputpath = ...; // directory for generated class files
String filepath = ...; // file path the file you want to compile
String[] args = new String[] {
"-classpath", classpath,
"-sourcepath", sourcepath,
"-d", putputpath,
filePath
};
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
int compileStatus = javac.compile(args);
我认为这是问题 .Explicitly指定的java.exe你使用作为一个在你的JDK目录的版本。
在这里看到的细节
刚刚从/ lib目录复制的tools.jar文件它的工作原理
您可以通过获得的System.out.println(System.getProperty( “java.home”))
多数时候就像是C:\ Program Files文件\的Java \ JRE(版本)的Windows]
另一种解决方案是: - http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7181951
复制的tools.jar在JDK_HOME / lib目录/成JRE_HOME / lib中/。 至少对我来说,它解决了我的问题神奇!
(我什么也没做推荐的上方。我只是复制它。)
这里是为我工作简单的解决方案
我只是改变了JRE系统库..... Program Files文件\的Java \ jdk1.7.0_55 \ jre的,而不是.... Program Files文件\的Java \ jdk1.7.0_55 \ bin和它为我工作。
在Mac上这个工作对我来说:
System.setProperty("java.home", "/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home");
javax.tools.JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
(它不会对IDK 10个工作由于某种原因)。
我曾在我的构建路径都JRE和JDK ...我只是删除了JRE和固定。