4

How to setup/run jaotc so it can find standard JDK classes ?
Using JDK 9 expiremental AOT compiler to pre-build some of the libraries, many fail for similar reasons. e.g.

jaotc --compile-for-tiered --info --output ../aoclib/postgresql-9.4.1208.so --jar ./postgresql-9.4.1208.jar

resuts in

Compiling ../aoclib/postgresql-9.4.1208...
 (85 ms)
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/win32/StdCallLibrary
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:545)
    at java.base/java.net.URLClassLoader.access$100(URLClassLoader.java:83)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:453)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:447)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:446)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
    at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:890)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    at jdk.aot/jdk.tools.jaotc.collect.ClassSearch.loadClass(ClassSearch.java:55)
    at jdk.aot/jdk.tools.jaotc.collect.ClassSearch.lambda$search$0(ClassSearch.java:47)
    at jdk.aot/jdk.tools.jaotc.collect.jar.JarFileSource.eachClass(JarFileSource.java:47)
    at jdk.aot/jdk.tools.jaotc.collect.ClassSearch.search(ClassSearch.java:47)
    at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:369)
    at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:306)
    at jdk.aot/jdk.tools.jaotc.Main.main(Main.java:284)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.win32.StdCallLibrary
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
    at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:890)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 19 more
Gilles D.
  • 1,167
  • 6
  • 16
sinus0
  • 41
  • 1
  • 2
    How about `jaotc --compile-for-tiered --info --output ../aoclib/postgresql-9.4.1208.so --jar ./postgresql-9.4.1208.jar --module java.base -J-cp` ? – Naman Jan 30 '18 at 17:18
  • 1
    `--module` is intended to specify a module to compile rather then import. But I did tried that - no luck – sinus0 Jan 31 '18 at 19:16
  • 1
    But this is about JNA? Which is not in `java.base` afaik. – Jorn Vernee Feb 03 '18 at 12:43
  • Rather about java.base items calling to JNA, but I see your point... – sinus0 Feb 05 '18 at 18:31
  • It looks like your library has a dependency on JNA, so you would have to add that to the class path as well. I think something like `-J-cp ` should work. – Jorn Vernee Feb 17 '19 at 16:59

0 Answers0