Por que executar scripts bash contendo comandos Java me dá erro de "classes ausentes"?

0

Alguns arquivos .sh que eu quero executar.

Eu era um usuário normal do Windows, então não tenho muita ideia sobre isso. Eu tinha arquivos .bat, que estavam fazendo o trabalho adequado para mim. Mas quando mudei para o Ubuntu está mostrando um erro:

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.

Eu não sei porque esses erros de Java estão acontecendo no Ubuntu ...

Gente me dá solução, obrigado antecipadamente .....

    
por sumit 08.07.2012 / 18:42

2 respostas

0

A partir deste link:

3 maneiras de resolver NoClassDefFoundError em Java

1 A classe não está disponível em Java Classpath ( Como definir o classpath para Java em Windows Unix e Linux ).
2 Você pode estar executando o programa usando o comando jar e a classe não foi definida no atributo ClassPath do arquivo de manifesto.
3 Qualquer script de inicialização está substituindo a variável de ambiente Classpath.

    
por swift 08.07.2012 / 19:26
0

O mais provável é que o shell script (para iniciar um programa em Java) tenha sido portado a partir do Windows, mas a construção do caminho de classe ainda esteja usando ponto e vírgula; no Linux, o separador PATH é o cólon. Tente substituir ponto e vírgula no parâmetro -cp por dois pontos. Ou alternadamente, como a instalação padrão do Java no Ubuntu é Java 6, o formato curinga do parâmetro -cp funcionará - passe a pasta que contém os arquivos jar, com um / * no final. Você terá que colocar isso entre aspas simples para que o shell não o expanda.

    
por Adrian 08.07.2012 / 20:45