UbuntuのフォルダーにCLASSPATH変数を設定する方法


16

私はそれexport CLASSPATH=/usr/local/java/tools.jar:$CLASSPATHがCLASSPATHにtools.jarを追加することを知っていますが、CLASSPATHにフォルダを設定したいです

このような

export CLASSPATH=/usr/local/java/lib/:$CLASSPATH

しかし、機能していません。

回答:


11

まず、一般に、環境変数を設定すると、CLASSPATH通常は解決するよりも多くの問題が発生します。すべてのアプリが同じクラスパスを必要とする/必要とするわけではなく、不要または不要なjarがクラスパスに含まれていると破損することが多いためです。Javaアプリには、必要なjarの最小数のみを含める必要があります。

クラスパスを設定する必要がある特定の個別のアプリがある場合、通常はコマンドラインオプションが推奨されますjava -cp path1:path2:...。デスクトップアイコンのコマンドを変更してこれらのオプションを含めるか、シェルスクリプトを変更してこれらのオプションを含めることができます。

とはいえ(そして常にルールには例外があるため)、Javaのバージョンに応じて(これはJava 6以降が必要です)、 " *"を追加することにより、jarのディレクトリ全体をクラスパスに追加するように指定できます。ディレクトリの最後。たとえば、次のとおりです。

 /dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...

手段:

  • /dir1/foo.jar -(単一のjar)がクラスパスに追加されます。
  • /dir2/dir3-このディレクトリ内のすべてのjarされていないクラスは、クラスパスに追加されます(適切なパッケージ構造であるcom.my.Foo.class必要があります。たとえば、にある必要があります/dir2/dir3/com/my/Foo.class
  • /dir5/dir6/*-このディレクトリ(つまり、/dir5/dir6/*.jar)内のすべてのjarがクラスパスに追加されます。この「*」はワイルドカードではないことに注意してください(使用することf*.jarもできませんし、使用することもできません*.jar)。「すべてのjarを追加する」ことを示す特殊文字です

一般に、jarのディレクトリ全体をアプリケーションのクラスパスに追加する必要がある場合、アプリは正しくバンドルされませんでした。むしろ、アプリには依存するjarのリストを含むマニフェストが必要です。または、少なくとも1つのjarのみをクラスパスに追加する必要があり、そのjarはそのマニフェストにサブディレクトリ内のjarのリスト全体を含めることができます。


これをubuntu 12.04で理解するには5時間以上かかります。ファイルをコンパイルしてクラスを実行した後、2つのことが重要です。1.クラスでパッケージを使用するかどうか。また、パッケージの親フォルダーで「java -cp。className」を使用する必要があります。2.「java -cp。:/ usr / lib / jvm / java-1.6.0-openjdk-i386 / jre / lib / *:/ dir2 / jarlib / *」のような「。:」を使用する必要があります。
zhihong 14年

@zhihongでは、netbeansのようなIDEの使用を検討する必要があります。これにより、使用中のビルドツールが実際にクラスパスを構成します。Netbeansで、mavenまたはgradleを使用して新しいプロジェクトを設定します(またはant-ただし、依存関係を処理する場合は複雑になります(ivyよりもmaven antタスクを参照)。現在、Gradleは「ホットな」ものです。試してみてください。また、(1)常にパッケージ名を使用する必要があります。(2)クラスパスのjvmディレクトリにクラスを含める必要はありません。それらはすでに「ブート」クラスパスにあります。
マイケル14年

ご提案ありがとうございます。実際には、私は日食を使用し、そこでコードが正しく実行されますが、ターミナルで実行すると、「ClassNotFoundException」が発生しました。外部のlib / jarを追加する方法をいろいろ試しましたが、すべて失敗しました。最後に、コマンドラインWITHにjvmディレクトリと外部lib / jarを含めることで機能します。しかし、私は今日試してみました、あなたは正しいです、jvmディレクトリは必要ありません。
zhihong

2

クラスパスを永続的に設定したい場合は、1)javaがインストールされている場所を確認してください。openjdk-7/ 6は/ usr / lib / jvm / .....にある「whereis java」を使用できます。

2)/ etc / environmentにCLASSPATHを設定する必要があります

  sudo gedit /etc/environment

3)次のように追加します..(タイピング中にスペースを残さないでください)(Javaバージョンとインストールに応じてカスタマイズします)(このホームパスは、オープンjdk 7用です)

   JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386/bin"

   export JAVA_HOME

   CLASSPATH=".:/usr/lib/jvm/java-7-openjdk-i386/lib:/home/laptop/Desktop/a2"

   export CLASSPATH

ディレクトリを「:」で区切ります


誰もがクラスパスに「{JAVA_HOME} / lib」を追加するのはなぜですか?それは必要ではありませんし、良いアイデアですらありません。さらに言えば、env CLASSPATHを設定することも悪い考えです。シェルスクリプト内にある場合を除き、そのスクリプトのためだけに、コマンドラインオプション "-cp"をjavaに設定することをお勧めします。
マイケル14年

0

ターミナルを開いてタイプする

sudo nano〜/ .bashrc

必要なすべてのエクスポートを追加します...

export JAVA_HOME = / usr / local / java / jdk1.6.0_06(パス)

ANT_HOME = / opt / ant / apache-ant-1.9.4をエクスポートします

最後に変更を有効にするためにターミナルを再起動します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.