32

ルートを持たないクラス サーバーで Java の作業を行っています。ant を使用してコンパイルしようとすると、常に間違ったディレクトリ (/usr/tomcatではなく/usr/tomcat/jre) を指します。

ユーザー アカウントを設定するときに指示されたことの 1 つはexport JAVA_HOME=/usr/tomcat/jre、.bashrc ファイルに追加することでした。それが問題を処理することになっていたかどうかはわかりませんが、そうではないようです。

では、ant の JAVA_HOME プロパティを変更するにはどうすればよいでしょうか。

編集: echo $JAVA_HOMEポイントを/usr/tomcat/jre echo $JAVA_HOME\binポイント/usr/tomcat/jrebin

問題は、通常 ant を実行すると、次のエラーが発生することです。

Unable to locate tools.jar. Expected to find it in /usr/tomcat/lib/tools.jar
Buildfile: build.xml

compile:
    [javac] Compiling 1 source file to /home/ejm244/build/classes

BUILD FAILED
/home/ejm244/build.xml:9: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.

Perhaps JAVA_HOME does not point to the JDK

Total time: 0 seconds
4

14 に答える 14

13

ant を実行するための独自のスクリプトを作成できます。たとえば、次のような ant.sh という名前が付けられます。

#!/bin/sh
JAVA_HOME=</path/to/jdk>; export JAVA_HOME
ant $@

次に、スクリプトを実行します。

$ chmod 755 ant.sh
$./ant.sh clean compile

または実行したい任意のantターゲット

于 2009-02-21T15:45:16.673 に答える
6

antを呼び出すためのシェルスクリプトを見ると、.bashrcでシェルに設定されている$ JAVA_HOMEの値が、ファイル/etc/ant.conf、$ HOME / .ant / ant.conf、および$で上書きされる可能性があります。 HOME/.antrc。bash -x <antスクリプトへのパス>を実行すると、デバッグ情報が出力され、$JAVA_HOMEがオーバーライドされている場所を追跡するのに役立ちます。

于 2009-02-21T21:38:38.007 に答える
6

JAVA_HOME は、JRE ではなく JDK がインストールされている場所を指す必要があります。

ls $JAVA_HOME と入力すると、何が表示されるでしょうか? ls $JAVA_HOME/bin/ を実行すると、javac が表示されますか?

最初の方法が機能しない場合は、JAVA_HOME が正しいディレクトリを指していません。2 番目が機能しない場合は、JAVA_HOME を JRE ではなく JDK に指定する必要があります。

于 2009-02-21T15:43:45.770 に答える
6

Windows 7 マシンの設定:

JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18" 

うまくいきませんでした。しかし、設定:

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18

働きました。

于 2010-03-14T21:27:15.490 に答える
3

env var:JAVACMDを設定します-Java実行可能ファイルのフルパス。これを使用して、JAVA_HOME / bin / java(.exe)とは異なるJVMを呼び出します。

参照:http ://ant.apache.org/manual/running.html

于 2012-01-25T12:22:44.567 に答える
3

環境変数JAVA_HOMEが正しく設定されていても、 は各build.xmlまたは任意のビルド ファイルant内で構成された JRE を使用する場合があります。

Ant が使用している JRE のバージョンを確認するには、ビルド ファイルを右クリック -> 選択するタスクの詳細を表示するビルド Ant を選択し、使用する JRE を選択します。

プロジェクト レベルの設定を使用するか、ワークスペース レベルのみを使用することをお勧めします。

于 2012-04-01T14:39:01.547 に答える
1

プロジェクトの JRE (プロジェクト プロパティ -> Java ビルド パス -> ライブラリ、通常は最後のエントリ)、または環境設定のグローバル デフォルト (Java -> インストールされた JRE) を JRE ではなく JDK に設定します。

于 2010-10-06T13:30:19.350 に答える
1

シェルから ant を実行する場合、最初に実行する必要はありませんexport JAVA_HOME。これにより、現在のシェルと将来のすべてのコマンドにその変数が設定されます。代わりに、

user@host:~# JAVA_HOME=/path/to/jdk ant targets
于 2013-03-17T03:47:51.003 に答える
1

Bashを使用する場合は、これを試してください:

$ export JAVA_HOME=/usr/tomcat/jre
于 2009-02-22T03:35:03.580 に答える
1

コードをコンパイルしようとしている場合、JAVA_HOME は JDK ホームを指す必要があります。「/usr/tomcat/jre/bin/javac」が存在するかどうかを確認します。私はそうは思わない。

JDK がない場合は、ECJ (eclipse コンパイラ) ライブラリを取得し、それを「~/.ant/lib」にドロップして、システム プロパティをコマンドラインに追加し、そのコンパイラを使用することで回避できます。 - 詳細については、Ant のマニュアルを確認してください。

http://ant.apache.org/

于 2009-02-22T00:30:02.340 に答える
0

JAVA_HOME パスを Java RE ディレクトリではなく Java SDK ディレクトリに変更する必要があります。Windows では、コマンド プロンプトで set コマンドを使用してこれを行うことができます。

例えば

set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_14"

于 2009-06-02T07:25:11.140 に答える
0

これを試してください:

/usr/sbin/update-alternatives --config java
于 2012-08-24T09:12:43.473 に答える
-1

java_home は常に、クラスを提供したコンパイラーである jdk を指し、jre は、ブラウザーまたはコンパイルされたクラスと同じように動作するため、バージョン内の jdk と jre が一致している必要があります。

于 2011-09-20T13:43:41.770 に答える