web-dev-qa-db-ja.com

.jarファイルからクラスを使用する方法は?

SunでJavaのJARファイルのチュートリアルを読みましたが、問題の解決策がまだ見つかりません。 jtwitter.jarというjarファイルのクラスを使用する必要があります。ファイルをダウンロードして実行しようとしました(昨日、.jarファイルをダブルクリックすることで実行できることがわかりました)。 [パス] /jtwitter.jarからメインクラスマニフェスト属性を読み込めませんでした。

.jarファイルをコーディングした人はそれをインポートすることを望んでいますが、.jarファイルをどこに保存してコードにインポートするのですか? .jarファイルと.Javaファイルの両方を同じディレクトリに配置しようとしましたが、うまくいきませんでした。

私が仕事をしようとしているファイルはこちらです: http://www.winterwell.com/software/jtwitter.php

JCreator LEを使用しています。

124
Gaurav Dadhania

すべてのjarファイルが実行可能というわけではありません。

ここで、Javaファイルに、jarの下にあるクラスをインポートする必要があります。例えば、

import org.xml.sax.SAXException;

IDEで作業している場合は、そのドキュメントを参照する必要があります。または、少なくともこのスレッドで使用しているものを指定します。それは間違いなくあなたをさらに支援することを可能にします。

IDEを使用していない場合は、 javac -cp オプションをご覧ください。ただし、プログラムをjarファイルにパッケージ化し、その中に必要なjarをすべて含めることをお勧めします。次に、jarを実行するために、

Java -jar my_program.jar

jarMETA-INF/MANIFEST.MFファイルが必要です。方法については here を参照してください。

33
Adeel Ansari

Jarファイルorg.example.jarに含まれるクラスClassnameを使用する必要があるとしましょう

そして、あなたのソースは次のようなファイルmysource.Javaにあります:

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}

まず、ご覧のとおり、コード内でクラスをインポートする必要があります。そのためにはimport org.example.Classname;が必要です

次に、ソースをコンパイルするときに、jarファイルを参照する必要があります。

コンパイル時に:;を使用する場合の違いに注意してください

  • UNIXのようなオペレーティングシステムの場合:

    javac -cp '.:org.example.jar' mysource.Java
    
  • あなたが窓の下にいる場合:

    javac -cp .;org.example.jar mysource.Java
    

この後、バイトコードファイルmysource.classを取得します

これを実行できます:

  • UNIXのようなオペレーティングシステムの場合:

    Java -cp '.:org.example.jar' mysource
    
  • あなたが窓の下にいる場合:

    Java -cp .;org.example.jar mysource
    
164
GabrieleV

クラスパスにjarファイルを追加する必要があります。 Javaクラスをコンパイルするには:

javac -cp .;jwitter.jar MyClass.Java

コードを実行するには(MyClassにmainメソッドが含まれている場合):

Java -cp .;jwitter.jar MyClass

Jarファイルはどこにでも置くことができます。 jarファイルがJavaファイルと同じディレクトリにある場合、上記の機能が動作します。

13
kgiannakakis

コードのコンパイル/実行時に、クラスパスに.jarファイルを配置する必要があります。次に、.jarのクラスの標準インポートを使用します。

6
workmad3

Workmad3が言うように、jarファイルがクラスパスにある必要があります。コマンドラインからコンパイルする場合、-classpathフラグを使用することを意味します。 (CLASSPATH環境変数は避けてください。首のIMOの痛みです。)

IDEを使用している場合は、どのIDEを使用するかをお知らせください。そのIDEに固有の手順をお手伝いします。

6
Jon Skeet