powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про classpath
9 сообщений из 9, страница 1 из 1
Вопрос про classpath
    #38432256
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JavaFXTest.jar использует библиотеку JavaFXTestLib.jar. Она лежит в папке lib.

Код: sql
1.
2.
[me@Linux ~]$ cd /home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTest
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar 



Всё работает.

Удаляю JavaFXTestLib.jar.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more


Получается ошибка. Всё правильно.
Вставляем обратно - опять всё работает.
Код: sql
1.
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar 



В java есть такой праметр как classpath или cp. Пробуем:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar -cp /home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more


Ошибка!
А так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar -cp /home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/JavaFXTestLib.jar
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more


Тоже ошибка!
И так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
[me@Linux JavaFXTest]$ export CLASSPATH="/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist"
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar -cp /home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/JavaFXTestLib.jar
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more
[me@Linux JavaFXTest]$ java -jar dist/JavaFXTest.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more
[me@Linux JavaFXTest]$ echo $CLASSPATH
/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist
[me@Linux JavaFXTest]$


Тоже ошибка!

Почему?

По идее должно работать.

Я это просто к тому, что есть у нас куча внешних библиотек. Хочется вынести их в отдельную папку. При обновлении менять несколько jar'ок. И запускать их script'ом, в котором просто прописать classpath. Но не работает.
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432266
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть отличия в определении class path при запуске с явным указанием класса и с указанием .jar - файла.
Попробуйте указать запускаемый класс и ключ -cp (или переменную CLASSPATH).
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432286
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понял.
Я по-моему это и делал.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
java -help
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include:
    -d32	  use a 32-bit data model if available
    -d64	  use a 64-bit data model if available
    -server	  to select the "server" VM
                  The default VM is server,
                  because you are running on a server-class machine.


    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://java.sun.com/javase/reference for more details.



Здесь написано, что:
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
Список директорий, zip-архивов и JAR-файлов, разделённых ":", в которых содержатся файлы классов.
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432334
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000,

У вас сразу две ошибки.

Первая. Во всех ваших примерах -cp и далее - это параметры вашему приложению, а не jvm. Те, которые в main(String[]) приходят. Все параметры для jvm указываются до -jar или до имени класса.

Вторая. classpath игнорируется при указании -jar. Все нужные библиотеки должны быть прописаны в манифесте jar-файла.
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432368
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, а так тоже не работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
java -cp /home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/JavaFXTestLib.jar -jar dist/JavaFXTest.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more



А как ещё запустить jar-файл без java -jar?

Манифест:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Manifest-Version: 1.0

Ant-Version: Apache Ant 1.8.3

Created-By: 1.7.0_25-b15 (Oracle Corporation)

Class-Path: lib/JavaFXTestLib.jar

X-COMMENT: Main-Class will be added automatically by build

Main-Class: javafxtest.JavaFXTest


Ну да, указывается.
А можно ли это переопределить какими-то внешними манипуляциями?
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432392
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000,

Вы бы чтоли поиском воспользовались или хотя бы FAQ прочитали.

java -cp .;%CLASSPATH%;Main.jar MainClassName
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432687
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так почему-то не работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[me@Linux dist]$ java -cp .:/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/:JavaFXTest.jar javafxtest.JavaFXTest
Exception in thread "main" java.lang.NoClassDefFoundError: testclass/NewTestClass
	at javafxtest.JavaFXTest.main(JavaFXTest.java:96)
Caused by: java.lang.ClassNotFoundException: testclass.NewTestClass
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 1 more



А так работает:
Код: sql
1.
2.
[me@Linux dist]$ java -cp .:/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/JavaFXTestLib.jar:JavaFXTest.jar javafxtest.JavaFXTest
[me@Linux dist]$ 



Ну, и так соответственно работает:
Код: sql
1.
2.
[me@Linux dist]$ export CLASSPATH=/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/JavaFXTestLib.jar 
[me@Linux dist]$ java -cp .:$CLASSPATH:JavaFXTest.jar javafxtest.JavaFXTest[me@Linux dist]$



Вопрос:
А почему?

Ведь можно же просто каталог указать - должно работать, но не работает.
Что? Каждую Jar-ку перечислять? А если их несколько сотен? Неохото.
Хотелось бы просто каталог указать.
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38432707
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niky4000,
Вы документацию пробовали читать?
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html
Там и про -jar и про -cp и про wildcards и примеры. Всё что нужно имеется.
...
Рейтинг: 0 / 0
Вопрос про classpath
    #38433037
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, да... Это ж очевидно.
Код: sql
1.
2.
3.
[me@Linux dist]$ export CLASSPATH=/home/me/SVN/branches/Linux/FX/7_1_2/JavaFXTestLib/dist/*
[me@Linux dist]$ java -cp .:$CLASSPATH:JavaFXTest.jar javafxtest.JavaFXTest[me@Linux dist]$ java -cp .:$CLASSPATH:JavaFXTest.jar javafxtest.JavaFXTest
[me@Linux dist]$
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про classpath
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]