Почему запуск сценариев bash, содержащих команды Java, дает мне & ldquo; пропущенные классы & rdquo; ошибка?

У меня есть несколько файлов .sh, которые я хочу запустить.

Я был обычным пользователем Windows, поэтому понятия не имею об этом. У меня были файлы .bat, которые делали для меня правильную работу. Но когда я переключился на Ubuntu, он показывает ошибку:

proton@proton-5750:~/Desktop/nand to tetris$ ./HardwareSimulator.sh
Exception in thread "main" java.lang.NoClassDefFoundError: HardwareSimulatorMain
Caused by: java.lang.ClassNotFoundException: HardwareSimulatorMain
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: HardwareSimulatorMain. Program will exit.
proton@proton-5750:~/Desktop/nand to tetris$ ./HardwareSimulator.sh
Exception in thread "main" java.lang.NoClassDefFoundError: HardwareSimulatorMain
Caused by: java.lang.ClassNotFoundException: HardwareSimulatorMain
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: HardwareSimulatorMain. Program will exit.

Я не понимаю, почему эти ошибки Java происходят в Ubuntu ...

Ребята, дайте мне решение, заранее спасибо .....

0
задан 9 July 2012 в 03:18

2 ответа

По этой ссылке:

3 способа решения NoClassDefFoundError на Java

1 Класс недоступен в Java Classpath ( Как установить Classpath для Java в Windows Unix и Linux ).
2 Возможно, вы запускали программу с помощью команды jar, а класс не был определен в атрибуте ClassPath файла манифеста.
3 Любой сценарий запуска переопределяет переменную среды Classpath.

0
ответ дан 9 July 2012 в 03:18

Скорее всего, сценарий оболочки (для запуска Java-программы) был перенесен из Windows, но при создании пути к классам все еще используются точки с запятой; в Linux разделителем PATH является двоеточие. Попробуйте заменить точку с запятой в параметре -cp на двоеточие. Или, наоборот, поскольку установкой Java по умолчанию в Ubuntu является Java 6, подстановочный знак для параметра -cp будет работать - передайте папку, содержащую файлы jar, с / / в конце. Вам придется заключить это в одинарные кавычки, чтобы оболочка не раскрыла его.

0
ответ дан 9 July 2012 в 03:18

Другие вопросы по тегам:

Похожие вопросы: