用于动态编译的Javac不起作用

时间:2016-03-24 11:38:00

标签: java compilation javac

我正在尝试编译一个HelloWorld类作为测试,它显示一个我不知道如何解决的错误。看起来它是关于不兼容版本的东西,但当我java -versionjavac -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

“类文件有错误的版本52.0,应该是49.0”。有人知道如何解决这个问题吗?我尝试了很多,但我没有找到解决方法。

2 个答案:

答案 0 :(得分:0)

为了能够运行java编译器,你从另一侧添加了一些外部功能。

这不是一个好方法。最有可能的是,您只安装了JRE(运行时环境)。

相反,您应该下载安装JDK(开发工具包)。后者带有javac;而你可以放心,它是" javac"和" java"二进制文件可以很好地协同工作

所以:确保你从一个正确的环境开始;不是你从这里或那里带来的东西。

答案 1 :(得分:0)

我终于找到了解决方法。看来默认情况下eclipse只导入jre jar,所以我不得不添加一个外部jar文件' tools.jar'在我的jdk文件夹中找到。 C:\Program Files\Java\jdk1.8.0_73\lib\tools.jar。 之后我可以编译我的课程