Estou tentando compreender um pouco como funciona o java por debaixo dos panos.
Criei uma aplicacao de teste HelloWorld com a seguinte estrutura de diretórios:
WORKDIR
+etc
log4j.properties
+META-INF
persistence.xml
+lib
<todas as bibliotecas necessárias>
+bin
<classes do src compiladas>
+src
+hello
HelloWorld.java
Message.java
HelloWorld e Message pertecem ao pacote hello e HelloWorld possue um método main. A classe HelloWorld possui dependencia com as bilbiotecas localizadas no diretório lib da raiz do projeto.
Quando inicio a JVM a para carregar e executar esta classe utilizo a seguinte linha de comando: java -classpath bin hello.HelloWorld
E recebo o seguinte retorno no console:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Persistence
at hello.HelloWorld.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 1 more
Preciso incluir as classes que estão no diretório lib no classpath. Tentei fazer isso separando os diretório por ponto-e-virgula “;”, mas nao deu certo: java -classpath bin;lib hello.HelloWorld
Como é possível fazer isso?