2016-03-24 10 views
4

HelloWorldクラスをテストと同様にコンパイルしようとしていますが、解決方法がわからないというエラーが表示されています。互換性のないバージョンのようですが、java -versionjavac -versionの両方が1.8.0_73を表示しています。動的コンパイル用のJavacが動作しません

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でなければなりません"。誰かがこの問題を解決する方法を知っていますか?私はたくさん試しましたが、解決する方法は見つけられませんでした。

+3

正しい 'java'と' javac'プログラムを実行していますか?あなたはそれらの2つの異なるバージョンを持っているかもしれません。 – Maroun

+0

はあなたのJavaとjavacのバージョンの不一致のようです。 –

+0

@MarounMarounええと私は正しいJavaを実行していると確信しています。 javacについて、別のサイトにダウンロードした外部jarを追加しました。このjavac.jarがなければ、私のコードはcom.sun.tools.javac.Mainのようなライブラリをインポートしないためです。それが問題ならば、私はそれを解決する方法を知らない。 –

答えて

0

私はついにそれを解決する方法を見つけました。私は外部のjarファイルとして 'tools.jar'をjdkフォルダに追加しなければならなかったので、デフォルトではEclipseのjre jarsだけをインポートするように見えます。 C:\Program Files\Java\jdk1.8.0_73\lib\tools.jar。 その後、クラスをコンパイルできます

0

Javaコンパイラを実行できるように、別の側から外部を追加しました。

これは良いアプローチではありません。ほとんどの場合、JRE(ランタイム環境)のみがインストールされています。

代わりに、JDK(開発キット)をダウンロードしてください。後のものにはjavacが付属しています。その "javac"と "java"バイナリが一緒にうまく動作することが保証されます。

したがって、正しい環境から開始していることを確認してください。ここからのものと一緒に引っ張ったものではありません。

+0

しかしそれが問題です。 JDKがインストールされていて、私が言ったように最新バージョンは1.8.0_73です。 JREとJDKの両方がインストールされています。しかし、この外部ジャーがなければ、プログラムは実行されません –

関連する問題