Возможность компилирования, но не может запустить Java из cmd с файлами JAR - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть файл Java, который использует библиотеки jfreechart, использует текстовый файл с локального диска и отображает график. Работает нормально с затмением. Однако я хочу запустить это из командной строки cmd, другие простые файлы Java могут успешно работать через cmd prmnt, но не могут запустить этот файл. PS: MyTool.java может скомпилировать без ошибок, и файл класса создан, но не может работать.


 1) This is how I am compiling it in cmd prompt: (gives 0 errors)

C:\Documents and Settings\hello.maga\workspace\MyTool\lib>javac -cp "gnujaxp.
jar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-e
xperimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar" MyTool.java

  2) This is how I am running it:


 C:\Documents and Settings\hello.maga\workspace\MyTool\lib>java -cp "gnujaxp.j
 ar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-ex
 perimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar" MyTool


    Error for second command: 

    Exception in thread "main" java.lang.NoClassDefFoundError: MyTool
    Caused by: java.lang.ClassNotFoundException: MyTool
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    Could not find the main class: MyTool.  Program will exit.

Чего я не понимаю, так это того, что если есть какие-либо ошибки, то это не должно компилироваться, может кто-то научит меня. Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Вы должны включить "." в пути к классам, вот так:

java -cp ".;gnujaxp.jar;iText-2.1.5.jar;jcommon-1.0.16.jar;jfreechart-1.0.13.jar;jfreechart-1.0.13-experimental.jar;jfreechart-1.0.13.jar;junit.jar;servlet.jar;swtgraphics2d.jar"
0 голосов
/ 15 сентября 2011

Из " Установка пути к классу ": "Путь к классу указывает инструментам и приложениям SDK, где искать сторонние и определяемые пользователем классы, то есть классы, которые не являются расширениями или частью Java.платформы Java. Путь к классу должен найти любые классы, которые вы скомпилировали с помощью компилятора javac - по умолчанию это текущий каталог для удобства поиска этих классов. "

Однако если вы установитеclasspath самостоятельно, значение по умолчанию больше не применяется, и вы ожидаете, что оно загрузит классы из текущего каталога.Вам придется добавить его вручную, например, добавив «.»к пути к классу, как рекомендовал Эд Стауб.

При компиляции ваш класс, так сказать, не был нужен на пути к классам, поскольку это то, что компилировалось.Для этого вам понадобились только все другие классы (в jar-файлах) на пути к классам.Вот почему вы можете компилировать, но не запускать, даже если вы использовали одинаковый путь к классу для обеих операций.

...