Java 本机库已加载到另一个Maven插件&x27;s类加载器

Java 本机库已加载到另一个Maven插件&x27;s类加载器,java,sqlite,jvm,classloader,native,Java,Sqlite,Jvm,Classloader,Native,我想使用for SQLite运行两个第三方Maven插件。插件配置大致如下所示: org.codehaus.mojo SQLMaven插件 ... org.xerial sqlite jdbc [...] org.jooq jooq codegen maven ... org.xerial sqlite jdbc [...] 现在,这个SQLite JDBC驱动程序在内部加载了一个本机库,这导致在第二个插件的执行中出现以下错误: java.lang.UnsatisfiedLinkError:

我想使用for SQLite运行两个第三方Maven插件。插件配置大致如下所示:


org.codehaus.mojo
SQLMaven插件
...
org.xerial
sqlite jdbc
[...]
org.jooq
jooq codegen maven
...
org.xerial
sqlite jdbc
[...]
现在,这个SQLite JDBC驱动程序在内部加载了一个本机库,这导致在第二个插件的执行中出现以下错误:

java.lang.UnsatisfiedLinkError:本机库
C:\Users\Lukas\AppData\Local\Temp\sqlite-3.7.151-amd64-sqlitejdbc.dll
已在另一个类加载器中加载
解决方法是注释掉其中一个插件


有没有一种适当的方法可以避免这个问题,而不必对运行这个问题的系统做任何假设?我想用上面的内容创建自包含测试,它应该在任何系统上运行,也就是说,将内容放入系统库路径并不是一个解决方案。Maven能解决这个问题吗?或者上述任何插件或(更有可能)JDBC驱动程序需要修复吗?

我们也有同样的问题。我们正在使用maven-com4j-plugin生成一个dll包装类,该类稍后将在由execmaven-plugin启动的Java程序的构建过程中使用。不同的类加载器,但相同的com4j dll。我们的解决方法是将com4jdll放在Maven的bin文件夹中。因此,我们有不同的DLL,可以从不同的类加载器加载