用于动态编译的 Javac 不起作用
Javac for dynamic compilation is not working
我正在尝试编译一个 HelloWorld class 作为测试,它显示了一个我不知道如何解决的错误。似乎是关于版本不兼容的问题,但是当我执行 java -version
和 javac -version
时都显示 1.8.0_73。
这是我要编译的内容:
String arquivo2 = "/C:/classes/HelloWorld.java";
PrintWriter saida = new PrintWriter(new FileWriter("logCompilacao.txt"));
int resultadoCompilacao = com.sun.tools.javac.Main.compile(new String[]{arquivo2},saida);
但这是输出:
/C:/classes/HelloWorld.java:2: cannot access java.lang.Object
bad class file: C:\Program Files\Java\jre1.8.0_73\lib\rt.jar(java/lang/Object.class)
class file has wrong version 52.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class HelloWorld {
^
1 error
"class file has wrong version 52.0, should be 49.0"。有人知道如何解决这个问题吗?试了很多都没找到解决方法
您从另一端添加了一些外部内容以便能够 运行 java 编译器。
这不是一个好方法。您很可能只安装了 JRE(运行time 环境)。
相反,您应该下载安装 JDK(开发工具包)。后者自带javac;您可以放心,它的 "javac" 和 "java" 二进制文件可以很好地协同工作。
因此:确保您从正确的环境开始;不是你从这里或那里收集的东西。
我终于找到解决办法了。似乎默认情况下 eclipse 只导入 jre jar,所以我不得不将在我的 jdk 文件夹中找到的文件 'tools.jar' 添加为外部 jar。 C:\Program Files\Java\jdk1.8.0_73\lib\tools.jar
。
之后我可以编译我的 类
我正在尝试编译一个 HelloWorld class 作为测试,它显示了一个我不知道如何解决的错误。似乎是关于版本不兼容的问题,但是当我执行 java -version
和 javac -version
时都显示 1.8.0_73。
这是我要编译的内容:
String arquivo2 = "/C:/classes/HelloWorld.java";
PrintWriter saida = new PrintWriter(new FileWriter("logCompilacao.txt"));
int resultadoCompilacao = com.sun.tools.javac.Main.compile(new String[]{arquivo2},saida);
但这是输出:
/C:/classes/HelloWorld.java:2: cannot access java.lang.Object
bad class file: C:\Program Files\Java\jre1.8.0_73\lib\rt.jar(java/lang/Object.class)
class file has wrong version 52.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class HelloWorld {
^
1 error
"class file has wrong version 52.0, should be 49.0"。有人知道如何解决这个问题吗?试了很多都没找到解决方法
您从另一端添加了一些外部内容以便能够 运行 java 编译器。
这不是一个好方法。您很可能只安装了 JRE(运行time 环境)。
相反,您应该下载安装 JDK(开发工具包)。后者自带javac;您可以放心,它的 "javac" 和 "java" 二进制文件可以很好地协同工作。
因此:确保您从正确的环境开始;不是你从这里或那里收集的东西。
我终于找到解决办法了。似乎默认情况下 eclipse 只导入 jre jar,所以我不得不将在我的 jdk 文件夹中找到的文件 'tools.jar' 添加为外部 jar。 C:\Program Files\Java\jdk1.8.0_73\lib\tools.jar
。
之后我可以编译我的 类