概要
エコーからわかるように、Java環境変数は正しく設定されています。ただし、jarは、javacコマンドに明示的に含まれている場合にのみ表示されます。
詳細
これは特にグラフィックスやOpenGlとは関係ありません。特定の問題はクラスパス、つまりサードパーティのjarファイルのインポートに関係しています。
Windows XP SP3、JDK1.7.0_13を使用する
Windows XPでは、システム環境変数PATH / JAVA_HOME / CLASSPATHが設定/追加され、次のディレクトリが含まれるようになりました。
C:\Documents and Settings\Administrator\My Documents\project\jar;
C:\Java\jdk1.7.0_13;
C:\Java\jdk1.7.0_13\bin;
C:\Java\jdk1.7.0_13\lib;
競合する可能性のあるユーザー定義変数はありません。ターミナルからの保証(更新されるように環境変数を変更した後、Windows XPで環境変数を設定するために再起動しました。Javaインストールの環境変数を参照してください):
>echo %classpath%
C:\Documents and Settings\Administrator\My Documents\project\jar;C:\Java\jdk1.7.0_13;C:\Java\jdk1.7.0_13\bin;C:\Java\jdk1.7.0_13\lib;
>echo %java_home%
C:\Documents and Settings\Administrator\My Documents\project\jar;C:\Java\jdk1.7.0_13;C:\Java\jdk1.7.0_13\bin;C:\Java\jdk1.7.0_13\lib;
>echo %path%
C:\WINDOWS\System32;... ...C:\Java\jdk1.7.0_13;C:\Java\jdk1.7.0_13\bin;C:\Java\jdk1.7.0_13\lib;C:\Documents and Settings\Administrator\My Documents\project\jar;
やり過ぎ、はい...それが機能するとき、私はそれらを適切にトリミングします
関連ファイル:
C:\Documents and Settings\Administrator\My Documents\project\jar\jogl-all.jar
C:\Documents and Settings\Administrator\My Documents\project\Mush.java
C:\Documents and Settings\Administrator\My Documents\project\JarDir.java
jogl-all.jarには「javax.media.opengl.GL2」が含まれています。Mush.javaは、java-OpenGLライブラリをインポートして単純な3Dキノコを表示するプログラムです。具体的には、「javax.media.opengl.GL2」をインポートします。
JarDir.javaは、 http: //www.java2s.com/Code/Java/File-Input-Output/Listfilesinajarfile.htmで見つけたプログラムで、jar内のクラスを示しています。これを使用して、jarの内容を証明しています。 。また、マシン上でコンパイルが可能であることも示しています。
JarDir.javaは次のとおりです。
import java.io.*;
import java.util.*;
import java.util.jar.*;
public class JarDir {
public static void main (String args[])
throws IOException {
JarFile jarFile = new JarFile("C:\\Documents and Settings\\Administrator\\My Documents\\project\\jar\\jogl-all.jar");
Enumeration enumy = jarFile.entries();
while (enumy.hasMoreElements()) {
process(enumy.nextElement());
}
}
private static void process(Object obj) {
JarEntry entry = (JarEntry)obj;
String name = entry.getName();
long size = entry.getSize();
long compressedSize = entry.getCompressedSize();
System.out.println(
name + "\t" + size + "\t" + compressedSize);
}
}
そして出力を与えます:
>javac JarDir.java
>java JarDir
... (lots of stuff)
javax/media/opengl/GL2.class 94123 28513
... (lots of stuff)
これは、コンパイルが成功し、jarファイル内にクラスが存在することを示しています。Mush.javaを実行しようとすると、多くのエラーが発生します。かなり最初のエラーです。
>javac Mush.java
Mush.java:21: error: package javax.media.opengl does not exist:
import javax.media.opengl.GL2;
^
これがクラスパスの問題であるかどうかを判断するために、次のコマンドを実行しました。
>javac Mush.java -cp ./jar/jogl-all.jar
関連するクラス( Mush.javaによってインスタンス化されて同じプロジェクトフォルダーにあるMushScene.javaなど)が存在しないことに基づいてエラーが発生しましたが、javax.media.openglを見つけるのに問題はありません!したがって、問題は環境変数の問題である必要があります。
つまり、echo%classpath%によると、クラスパスは正しく設定されていますが、javaは同意しません。私は何を間違えましたか?
注:Mush.javaプログラムは、Linuxで実証的に機能しています。
注2:複数のjarがあり、jarフォルダー内でN個のjarを使用することになった場合、各jarに具体的に名前を付けるのではなく、フォルダーを含めることができるようにしたいと思います=)