私はEclipseをantスクリプトで使用していますが、EclipseはWindowsXPのデフォルトのJREインストールでうまく機能します。
クラスパスにtools.jarがないために失敗する、javac-tagを使用してコンパイルするAntスクリプトを実行したいときに煩わしさがあります。
JDKをWindowsのデフォルトのJavaにすることができれば、今日持っているものに加えて、箱から出して作業できるようになるだろうという考えを持っています。
これはできますか?インストールプロセスで何を見逃しましたか?
編集:私はJava_HOMEを知っていますが、それは面倒でエラーが発生しやすいです(新しいJDKが利用可能になったときに環境変数を手動で更新することは必ずしも私が覚えていることではありません)。
編集:私は、javacタスクにEclipseコンパイラー(ecj.jar)を使用させる方法を理解することになりました。これは非常にうまく機能します。
編集:MavenはEclipseコンパイラーの使用もサポートしていますが、これは非常にまれであり、古いバージョンのecj.jarで使用されているようです。後でこれを調べるつもりです。
編集:maven-compiler-plugin 3.0でecjを使用すると非常にうまく機能し、JREでビルドできます。
編集:ecjによって生成されたバイトコードを解析するときにjavadocツールがクラッシュする問題がありました。
答えは「いいえ」です。インストール時にJDKをデフォルトのJVMにする方法はありません。
他の回答が指摘しているように、パスとJava_HOMEを調整して、JDKまたは別のJVMを完全に指すようにすることができます。これは実際、Javaインストールが最初に行うことです。
ただし、問題は、tools.jarを見つけたいということです。これを行うには、デフォルトのJVMの下のextディレクトリにコピーします。 JDKファイル構造を確認してください ここ 。これはおそらくうまくいくでしょう。
一方、JavaのJava_HOME変数とPATH変数を変更するのが面倒だと思われる場合は、それが私たちを鋭く保つために行う一連のことの1つにすぎないことを忘れないでください
C:\Program Files\Java\<your_jdk_version>\bin\Java.exe
。C:\Program Files\Java\jdk1.7.0_07\bin\Java.exe
Tools.jarファイルをEclipseが探している場所にコピーすることは機能するかもしれませんが、それは次にJDKをアップグレードするときに覚えていないかもしれないステップなので、厄介で壊れやすいものです。 Eclipseを説得して、適切な場所でそれを探すことをお勧めします。
Java_HOMEを正しい場所に設定することは、一部のツールでは機能しますが、 Eclipseはそれを尊重しません 。
試すべきいくつかのこと:
JDKがPreferences-> Java-> Installed JREsで識別および選択されていることを確認してください。
AntがJDKによって呼び出されていることを確認してください。 1つの手がかりは、コンソール出力の上部に、使用されているjavaw.exeのパスが表示されるはずです。そのパスがJREにある場合は、より説得力が必要です。 Run-> External Tools-> External Tools Configurations-> [your Ant build]-> JREをチェックし、そこでの設定がJDKを指していることを確認します。
JREではなくJDKを指すようにJava_HOME環境変数を変更してみてください。
あるいは、または場合によっては追加で、PATHエントリをJDK binディレクトリに追加しますbefore任意のWindowsシステムディレクトリ。
Antを機能させるにはJava_HOMEで十分だと思いますが、パスでJavaなどのJDKバージョンを取得するのも良い場合があります。そのため、からJava
を実行するだけです。コマンドラインでは、正確にjavac
を実行したときと同じバージョンが表示されます。
パスを自動的に再構成するWSHスクリプトを作成することもできます。
このJScriptスクリプトは、いくつかの情報を出力するだけです。
//file: jdk.js usage: cscript /Nologo jdk.js
var objShell = WScript.CreateObject("WScript.Shell");
function setJdk(version) {
try {
var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" +
"JavaSoft\\Java Development Kit\\" + version + "\\JavaHome");
if(jdk != null && jdk != "") {
jdk += "\\bin";
var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path");
path = jdk + ";" + path;
WScript.Echo("Could set PATH to " + path + "\n");
}
} catch(err) { /*probably key does not exist*/ }
}
setJdk("1.7");
setJdk("1.6");
setJdk("1.5");
レジストリへの書き込みに使用できる RegWrite メソッドがあります。最新バージョンの決定とパスの再調整、廃止されたエントリの削除、システムパスとユーザーパスの分類には、少し作業が必要です。間違いなく、Java_HOME
の設定にも使用できます。 JREインストーラーがsystem32
をそこに配置するため、JDKエントリはJava.exe
ディレクトリの前に表示される必要があります。
(シェルがそのような変更を検出するかどうか、または何らかの再起動/環境変数のリロードが必要かどうかは100%わかりません。)
原因のこれは実行可能です。人々がこの質問に「いいえ」と言った理由がわかりません。 tools.jarをコピーするのは賢明な方法ではありません。eclipeseを使用するときに問題が発生しました。ビルドパスにjreの代わりにjdkを追加するだけで機能します。
詳細は次のとおりです。
http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx
これは通常、Java_HOME
環境変数を使用するルートJDKディレクトリに設定することによって行われます。
たとえば、コマンドラインまたはバッチファイルから、次のような操作を行うだけです。
set Java_HOME=C:\Program Files\Java\jdk1.6.0_14
ただし、Java_HOMEを永続的に設定するには、マイコンピュータのプロパティシートの詳細タブの環境変数に追加します。
どうやらEclipseはtools.jar
なしでコンパイルできるようです。 JRE(JDKではなく)で機能する特定のjavac
コマンドがあると思います。これが、警告を一覧表示できる理由である可能性があります。
とにかく、私は(上記で提案したように)標準的な方法でシステムにJDKをインストールします。 Java_HOME
ファイルを微調整することで(Eclipse.ini
を変更せずに)その特定のJDKでEclipseを起動することもできます(これらの 手順 を参照)。