Hallo zusammen,
ich benötige für mein Java-Projekt 3 Libraries als Jar. Da ich die Anwendung später als JLink Package erzeugen möchte
muss ich den Jars (Libs) eine Module-Info hinzufügen, sodass diese keine automatic modules mehr sind (sonst klappt
das Erzeugen mit JLlink nicht mehr?)
Also habe ich über jdeps ausgelesen welche Dependencies die Jars benötigen, eine Module-Info erzeugt und wieder zu einem
Jar compiled.
Soweit so gut, sodass sich das JLink Package erzeugen lässt. Starte ich nun aber die Anwendung erhalte ich folgende
Exception:
Also habe ich die Prozedur mit Jdeps noch einmal durchgeführt und gemerkt, dass es dort folgende Warnings gab:
Mir ist bewusst dass die 3 Jars von einander Abhängig sind und sich jeweils in den Module-Infos "requiren".
Da ich mit Modulen aber unerfahren bin weis ich nicht so recht was ich hier falsch mache?
Hier noch die mit Jdeps erzeugten Module-Infos der 3 Jars, wenn ich dem Jdeps Befehl "--ignore-missing-deps" hinzufüge.
ich benötige für mein Java-Projekt 3 Libraries als Jar. Da ich die Anwendung später als JLink Package erzeugen möchte
muss ich den Jars (Libs) eine Module-Info hinzufügen, sodass diese keine automatic modules mehr sind (sonst klappt
das Erzeugen mit JLlink nicht mehr?)
Also habe ich über jdeps ausgelesen welche Dependencies die Jars benötigen, eine Module-Info erzeugt und wieder zu einem
Jar compiled.
Code:
jdeps --ignore-missing-deps --generate-module-info jars jars/commons-dbcp2-2.9.0.jar
javac --patch-module commons.dbcp2=jars/commons-dbcp2-2.9.0.jar jars/module-info.java
jar uf jars/commons-dbcp2-2.9.0.jar -C jars module-info.class
3x - für jede Jar
Soweit so gut, sodass sich das JLink Package erzeugen lässt. Starte ich nun aber die Anwendung erhalte ich folgende
Exception:
Java:
java.lang.IllegalAccessError: class org.apache.commons.dbcp2.BasicDataSource (in module commons.dbcp2)
cannot access class org.apache.commons.logging.LogFactory (in module commons.logging)
because module commons.dbcp2 does not read module commons.logging
Also habe ich die Prozedur mit Jdeps noch einmal durchgeführt und gemerkt, dass es dort folgende Warnings gab:
Code:
jdeps --generate-module-info jars jars/commons-dbcp2-2.9.0.jar
Error: Missing dependencies: classes not found from the module path and classpath.
To suppress this error, use --ignore-missing-deps to continue.
commons.dbcp2
org.apache.commons.dbcp2.AbandonedTrace -> org.apache.commons.pool2.TrackedUse not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.PooledObjectFactory not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.SwallowedExceptionListener not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.impl.AbandonedConfig not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.impl.BaseObjectPoolConfig not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.impl.GenericObjectPool not found
org.apache.commons.dbcp2.BasicDataSource -> org.apache.commons.pool2.impl.GenericObjectPoolConfig not found
org.apache.commons.dbcp2.BasicDataSourceFactory -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.BasicDataSourceFactory -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.BasicDataSourceFactory -> org.apache.commons.pool2.impl.BaseObjectPoolConfig not found
org.apache.commons.dbcp2.BasicDataSourceFactory -> org.apache.commons.pool2.impl.GenericObjectPoolConfig not found
org.apache.commons.dbcp2.ObjectNameWrapper -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.ObjectNameWrapper -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.PoolableCallableStatement -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.PoolableConnection -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.DestroyMode not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.PooledObjectFactory not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.impl.GenericKeyedObjectPool not found
org.apache.commons.dbcp2.PoolableConnectionFactory -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.PoolablePreparedStatement -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.PoolingConnection -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.PoolingConnection -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.PoolingConnection -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.PoolingConnection -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.PoolingDataSource -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.PoolingDataSource -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.PoolingDataSource -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.PoolingDataSource -> org.apache.commons.pool2.PooledObjectFactory not found
org.apache.commons.dbcp2.PoolingDataSource -> org.apache.commons.pool2.impl.GenericObjectPool not found
org.apache.commons.dbcp2.PoolingDriver -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.PoolingDriver$PoolGuardConnectionWrapper -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.SwallowedExceptionLogger -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.SwallowedExceptionLogger -> org.apache.commons.pool2.SwallowedExceptionListener not found
org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS -> org.apache.commons.pool2.impl.BaseObjectPoolConfig not found
org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS -> org.apache.commons.pool2.impl.GenericKeyedObjectPool not found
org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.cpdsadapter.PooledConnectionImpl -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.cpdsadapter.PooledConnectionImpl -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.cpdsadapter.PooledConnectionImpl -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.cpdsadapter.PooledConnectionImpl -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.datasources.CPDSConnectionFactory -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.datasources.CPDSConnectionFactory -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.datasources.CPDSConnectionFactory -> org.apache.commons.pool2.PooledObjectFactory not found
org.apache.commons.dbcp2.datasources.CPDSConnectionFactory -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.datasources.InstanceKeyDataSource -> org.apache.commons.pool2.impl.BaseObjectPoolConfig not found
org.apache.commons.dbcp2.datasources.InstanceKeyDataSource -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.datasources.KeyedCPDSConnectionFactory -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.datasources.KeyedCPDSConnectionFactory -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.datasources.KeyedCPDSConnectionFactory -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.datasources.KeyedCPDSConnectionFactory -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.logging.Log not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.logging.LogFactory not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.pool2.PooledObjectFactory not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.pool2.SwallowedExceptionListener not found
org.apache.commons.dbcp2.datasources.PerUserPoolDataSource -> org.apache.commons.pool2.impl.GenericObjectPool not found
org.apache.commons.dbcp2.datasources.SharedPoolDataSource -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.datasources.SharedPoolDataSource -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.datasources.SharedPoolDataSource -> org.apache.commons.pool2.impl.GenericKeyedObjectPool not found
org.apache.commons.dbcp2.datasources.SharedPoolDataSource -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.managed.BasicManagedDataSource -> javax.transaction.TransactionManager not found
org.apache.commons.dbcp2.managed.BasicManagedDataSource -> javax.transaction.TransactionSynchronizationRegistry not found
org.apache.commons.dbcp2.managed.BasicManagedDataSource -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.managed.BasicManagedDataSource -> org.apache.commons.pool2.impl.GenericObjectPool not found
org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory -> javax.transaction.TransactionManager not found
org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory -> javax.transaction.TransactionSynchronizationRegistry not found
org.apache.commons.dbcp2.managed.LocalXAConnectionFactory -> javax.transaction.TransactionManager not found
org.apache.commons.dbcp2.managed.LocalXAConnectionFactory -> javax.transaction.TransactionSynchronizationRegistry not found
org.apache.commons.dbcp2.managed.ManagedConnection -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.managed.ManagedDataSource -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.managed.PoolableManagedConnection -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.KeyedObjectPool not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.KeyedPooledObjectFactory not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.ObjectPool not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.PooledObject not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.impl.DefaultPooledObject not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.impl.GenericKeyedObjectPool not found
org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory -> org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.RollbackException not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.Status not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.Synchronization not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.SystemException not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.Transaction not found
org.apache.commons.dbcp2.managed.TransactionContext -> javax.transaction.TransactionSynchronizationRegistry not found
org.apache.commons.dbcp2.managed.TransactionContext$1 -> javax.transaction.Status not found
org.apache.commons.dbcp2.managed.TransactionContext$1 -> javax.transaction.Synchronization not found
org.apache.commons.dbcp2.managed.TransactionRegistry -> javax.transaction.SystemException not found
org.apache.commons.dbcp2.managed.TransactionRegistry -> javax.transaction.Transaction not found
org.apache.commons.dbcp2.managed.TransactionRegistry -> javax.transaction.TransactionManager not found
org.apache.commons.dbcp2.managed.TransactionRegistry -> javax.transaction.TransactionSynchronizationRegistry not found
Mir ist bewusst dass die 3 Jars von einander Abhängig sind und sich jeweils in den Module-Infos "requiren".
Da ich mit Modulen aber unerfahren bin weis ich nicht so recht was ich hier falsch mache?
Hier noch die mit Jdeps erzeugten Module-Infos der 3 Jars, wenn ich dem Jdeps Befehl "--ignore-missing-deps" hinzufüge.
Code:
module commons.dbcp2 {
requires transitive commons.logging;
requires transitive commons.pool2;
requires transitive java.logging;
requires transitive java.management;
requires transitive java.naming;
requires transitive java.sql;
requires transitive java.transaction.xa;
exports org.apache.commons.dbcp2;
exports org.apache.commons.dbcp2.cpdsadapter;
exports org.apache.commons.dbcp2.datasources;
exports org.apache.commons.dbcp2.managed;
}
module commons.logging {
requires transitive java.logging;
exports org.apache.commons.logging;
exports org.apache.commons.logging.impl;
}
module org.apache.commons.pool2 {
requires transitive java.management;
exports org.apache.commons.pool2;
exports org.apache.commons.pool2.impl;
exports org.apache.commons.pool2.proxy;
}