/ / Erro ao construir o arquivo jar com o Eclipse [duplicado] - java, eclipse, maven, jar, noclassdeffounderror

Erro ao construir o arquivo jar com o Eclipse [duplicado] - java, eclipse, maven, jar, noclassdeffounderror

Então eu criei um projeto no eclipse, e eu quero criar um arquivo JAR com ele. A pasta do projeto contém as seguintes pastas:

  • src (contém dois pacotes)
  • Bibliotecas do sistema JRE
  • Bibliotecas referenciados ( "jasypt-1.9.2.jar" e "json_simple-1.1.jar")
  • libs (novamente: "jasypt-1.9.2.jar" e "json_simple-1.1.jar")
  • recursos (contendo imagens e arquivos)

Se eu for para: rclick no nome do projeto -> Propriedades -> Java Build Path -> Bibliotecas

Eu vejo as duas bibliotecas corretamente adicionadas ao caminho de compilação.

Então eu vou para rclick em nome do projeto -> exportação-> arquivo JAR e aqui eu exporto tudo (só para ter certeza ..!). Então eu coloquei o MainClass como ponto de entrada e, em seguida, o arquivo JAR é criado sem qualquer problema.

Quando eu extraio o arquivo JAR (registry.jar), vejo que ele contém tudo de que precisa: [package1, package2, META-INF, libs, recursos, .classpath, .project]

Além disso, o .classpath está correto (pelo menos, parece-me .. não 100% de certeza!):

   <?xml version="1.0" encoding="utf-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="libs/jasypt-1.9.2.jar"/>
<classpathentry exported="true" kind="lib" path="libs/json_simple-1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

MAS, então, quando vou executar o arquivo registry.jar na linha de comando (tanto no Windows quanto no Ubuntu), assim:

java -jar registry.jar

eu recebo:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at ...
at ...
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
at java.net.URLClassLoader$1.run<Unknown Source>
at ...
at ...
... lots more

O programa compila e funciona perfeitamente dentro do eclipse. Eu simplesmente não consigo descobrir qual é o problema ...

Respostas:

0 para resposta № 1

o .classpath arquivo não tem significado para Java. É usado apenas pelo Eclipse. Java não reconhece que as bibliotecas necessárias estão sob o lib entrada no arquivo Jar.

Você teria que incluir o caminho das bibliotecas através do comando:

java -jar registry.jar -cp lib

onde neste caso lib é uma pasta que reside ao lado do Jar exportado.

Se você está usando o Maven, você pode o plugin de montagem para gerar um arquivo executável. Como posso criar um JAR executável com dependências usando o Maven?.