Резюме
Переменные среды Java установлены правильно, как видно из их повторения. Однако jar-файлы видны только в том случае, если они явно включены в команду javac.
Подробности
Это не относится конкретно к графике и 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, см. Переменные среды для установки 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; в частности, он импортирует "javax.media.opengl.GL2".
JarDir.java - это программа, которую я нашел по адресу http://www.java2s.com/Code/Java/File-Input-Output/Listfilesinajarfile.htm, который показывает, какие классы находятся в банке, я использую его для проверки содержимого банки. Это также демонстрирует, что компиляция возможна на машине.
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
Что выдавало ошибки из-за отсутствия связанных классов (таких как MushScene.java, который создается Mush.java и находится в той же папке проекта ...) НО проблем с поиском javax.media.opengl нет! Значит, проблема должна быть в переменной окружения!
Тогда это означает, что, хотя согласно echo% classpath% путь к классам установлен правильно, java не соглашается. Что я сделал не так?
Примечание: программа Mush.java демонстративно работала в Linux.
Примечание 2: у меня есть несколько банок, если я в конечном итоге использую N банок в папке jar, я хотел бы иметь возможность включить папку, а не называть каждую банку отдельно =)
C:\Documents and Settings\Administrator\My Documents\project\jar\jogl-all.jar
. Проверить полный путь - person Subin Sebastian   schedule 02.02.2013>javac Mush.java -cp ./jar/jogl-all.jar
, вы указываете полный путь - person Subin Sebastian   schedule 02.02.2013