Home > Blockchain >  Eclipse IvyDE managed libraries not exported into runnable JAR file
Eclipse IvyDE managed libraries not exported into runnable JAR file

Time:06-21

The problem

So far, Eclipse has exported IvyDE managed libraries into a runnable JAR file, but I'm not sure why it has stopped working recently.

What's wrong? How can I fix the issue?

ivy.xml

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation= "http://ant.apache.org/ivy/schemas/ivy.xsd">
  <info organisation="com.example" module="eclipse-ivyde-export-issue" />
  <dependencies>
    <dependency org="org.json" name="json" rev="20220320"/>
  </dependencies>
</ivy-module>

Steps for reproducing the issue

  1. Clone the project:

    git clone [email protected]:haba713/eclipse-ivyde-export-issue.git
    
  2. Import the cloned project into Eclipse workspace.

  3. Right-click the class src/com.example/Main.java in the project tree and choose Run as → Java Application. See the output: {"key":"value"}.

  4. Right-click the project and choose Export → Java → Runnable JAR file.

  5. Choose the launch configuration for the class com.example.Main and Library handling: [x] Extract required libraries into generated JAR. Click Finish.

  6. Try to run the generated JAR file:

    $ java -jar eclipse-ivyde-export-issue.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
      at com.example.Main.main(Main.java:8)
    Caused by: java.lang.ClassNotFoundException: org.json.JSONObject
      at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
      at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
      ... 1 more
    

Environment

  • Eclipse 2022-06 M2 (4.24.0 M2)
  • IvyDE 2.2.0.final-201311091524-RELEASE
  • OpenJDK 17.0.3 7-Debian-1deb11u1
  • Debian GNU/Linux 11 (Bullseye)

Eclipse 2020-06 with OpenJDK 8 works fine

I tested the same project with Eclipse 2020-06 and OpenJDK 8. JAR export gives a warning "This operation repacks referenced libraries" and IvyDE managed classes are included into the generated JAR file.

(The question was posted also to Eclipse Community Forums.)

CodePudding user response:

Workaround

I think that this is a JDT or IvyDE bug. Workaround is to use JRE System Library 1.8 instead of 17. See the note at the end of README for more information.

  • Related