Java環境變量設置正確,從回聲-ING他們看到。但是,只有在明確包含在javac命令中時纔會看到jar。
詳細
這是不具體涉及到圖形和OpenGL,某些問題涉及到類路徑,即第三方JAR文件的進口。
使用Windows XP SP3,JDK 1.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中的環境變量後重新啓動,看Environment variables for java installation):
>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」,玉米粥。 java是一個通過導入java-OpenGL庫顯示簡單的三維蘑菇的程序;特別是它導入「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;
^
要確定這是否是一個classpath的問題,我跑:
>javac Mush.java -cp ./jar/jogl-all.jar
基於缺乏這給了錯誤相關類的存在(如MushScene.java這是由Mush.java實例化和生活在同一個項目文件夾中...)但找到javax.media.opengl沒有問題!所以這個問題一定是一個環境變量問題!
這就意味着,雖然根據echo%classpath%類路徑設置正確,但java不同意。我做錯了什麼?
注意:Mush.java程序已經在Linux上進行了演示。
注2:我有多個罐,如果我最終使用jar文件夾內的N個廣口瓶,我想能夠包括的文件夾,而不是專門命名每個罐子=)
爲什麼不在類路徑'C:\ Documents and Settings \ Administrator \ My Documents \ project \ jar \ jogl-all.jar'中添加完整的jar路徑。檢查完整路徑 – Subin
請參閱當您執行'> javac Mush.java -cp。/ jar/jogl-all.jar'時,請提供完整路徑 – Subin
感謝JB Nizet和Subin。儘管jar文件夾位於類路徑中,但jar文件的內容不是,它的jar文件夾就是它們自己的文件夾。 接下來的問題就是,我們如何遞歸地添加一個文件夾,以便所有子文件夾(和jar內容)都被添加到Classpath(程序看起來)?這個問題是單獨的,並已在這裏問:http://stackoverflow.com/questions/402330/is-it-possible-to-add-to-classpath-dynamically-in-java – xxjjnn