atteo / classindex

Index classes, do not scan them!
Apache License 2.0
263 stars 43 forks source link

Catch NoClassDefFoundError too #57

Closed ptahchiev closed 4 years ago

ptahchiev commented 4 years ago

Related to #56 we need to catch also NoClassDefFoundError too for when classes were present at compile time but missing at runtime.

ptahchiev commented 4 years ago

Hi @sentinelt I have a problem running the tests of classindex - i think it might be something about my java version:

INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.atteo.classindex.RunOSGiContainerIntegrationTest
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
ERROR: Bundle org.ops4j.pax.exam [1] Error starting link:classpath:META-INF/links/org.ops4j.pax.exam.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam [1](R 1.0): missing requirement [org.ops4j.pax.exam [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.lang)(version>=1.5.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)] Unresolved requirements: [[org.ops4j.pax.exam [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.lang)(version>=1.5.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam [1](R 1.0): missing requirement [org.ops4j.pax.exam [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.lang)(version>=1.5.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)] Unresolved requirements: [[org.ops4j.pax.exam [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.lang)(version>=1.5.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.exam.inject [2] Error starting link:classpath:META-INF/links/org.ops4j.pax.exam.inject.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.inject [2](R 2.0): missing requirement [org.ops4j.pax.exam.inject [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j)(version>=1.4.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.pax.logging.pax-logging-api [5](R 5.0): missing requirement [org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers)] Unresolved requirements: [[org.ops4j.pax.exam.inject [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j)(version>=1.4.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.inject [2](R 2.0): missing requirement [org.ops4j.pax.exam.inject [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j)(version>=1.4.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.pax.logging.pax-logging-api [5](R 5.0): missing requirement [org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers)] Unresolved requirements: [[org.ops4j.pax.exam.inject [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.slf4j)(version>=1.4.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.exam.extender.service [3] Error starting link:classpath:META-INF/links/org.ops4j.pax.extender.service.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.extender.service [3](R 3.0): missing requirement [org.ops4j.pax.exam.extender.service [3](R 3.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7)) Unresolved requirements: [[org.ops4j.pax.exam.extender.service [3](R 3.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.extender.service [3](R 3.0): missing requirement [org.ops4j.pax.exam.extender.service [3](R 3.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7)) Unresolved requirements: [[org.ops4j.pax.exam.extender.service [3](R 3.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.logging.pax-logging-api [5] Error starting link:classpath:META-INF/links/org.ops4j.pax.logging.api.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.logging.pax-logging-api [5](R 5.0): missing requirement [org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers) Unresolved requirements: [[org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers)])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.logging.pax-logging-api [5](R 5.0): missing requirement [org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers) Unresolved requirements: [[org.ops4j.pax.logging.pax-logging-api [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=javax.xml.parsers)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.base [6] Error starting link:classpath:META-INF/links/org.ops4j.base.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl) Unresolved requirements: [[org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl) Unresolved requirements: [[org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.swissbox.core [7] Error starting link:classpath:META-INF/links/org.ops4j.pax.swissbox.core.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.core [7](R 7.0): missing requirement [org.ops4j.pax.swissbox.core [7](R 7.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.core [7](R 7.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.core [7](R 7.0): missing requirement [org.ops4j.pax.swissbox.core [7](R 7.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.core [7](R 7.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.swissbox.extender [8] Error starting link:classpath:META-INF/links/org.ops4j.pax.swissbox.extender.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.extender [8](R 8.0): missing requirement [org.ops4j.pax.swissbox.extender [8](R 8.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.extender [8](R 8.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.extender [8](R 8.0): missing requirement [org.ops4j.pax.swissbox.extender [8](R 8.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.extender [8](R 8.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.swissbox.framework [9] Error starting link:classpath:META-INF/links/org.ops4j.pax.swissbox.framework.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.framework [9](R 9.0): missing requirement [org.ops4j.pax.swissbox.framework [9](R 9.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.spi)(version>=1.5.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)] Unresolved requirements: [[org.ops4j.pax.swissbox.framework [9](R 9.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.spi)(version>=1.5.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.framework [9](R 9.0): missing requirement [org.ops4j.pax.swissbox.framework [9](R 9.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.spi)(version>=1.5.0)(!(version>=2.0.0))) [caused by: Unable to resolve org.ops4j.base [6](R 6.0): missing requirement [org.ops4j.base [6](R 6.0)] osgi.wiring.package; (osgi.wiring.package=javax.net.ssl)] Unresolved requirements: [[org.ops4j.pax.swissbox.framework [9](R 9.0)] osgi.wiring.package; (&(osgi.wiring.package=org.ops4j.spi)(version>=1.5.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.swissbox.lifecycle [10] Error starting link:classpath:META-INF/links/org.ops4j.pax.swissbox.lifecycle.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.lifecycle [10](R 10.0): missing requirement [org.ops4j.pax.swissbox.lifecycle [10](R 10.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.lifecycle [10](R 10.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.lifecycle [10](R 10.0): missing requirement [org.ops4j.pax.swissbox.lifecycle [10](R 10.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.lifecycle [10](R 10.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.swissbox.tracker [11] Error starting link:classpath:META-INF/links/org.ops4j.pax.swissbox.tracker.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.tracker [11](R 11.0): missing requirement [org.ops4j.pax.swissbox.tracker [11](R 11.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.tracker [11](R 11.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.swissbox.tracker [11](R 11.0): missing requirement [org.ops4j.pax.swissbox.tracker [11](R 11.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6)) Unresolved requirements: [[org.ops4j.pax.swissbox.tracker [11](R 11.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.6))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
ERROR: Bundle org.ops4j.pax.exam.invoker.junit [16] Error starting link:classpath:META-INF/links/org.ops4j.pax.exam.invoker.junit.link (org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.invoker.junit [16](R 16.0): missing requirement [org.ops4j.pax.exam.invoker.junit [16](R 16.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7)) Unresolved requirements: [[org.ops4j.pax.exam.invoker.junit [16](R 16.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7))])
org.osgi.framework.BundleException: Unable to resolve org.ops4j.pax.exam.invoker.junit [16](R 16.0): missing requirement [org.ops4j.pax.exam.invoker.junit [16](R 16.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7)) Unresolved requirements: [[org.ops4j.pax.exam.invoker.junit [16](R 16.0)] osgi.ee; (&(osgi.ee=JavaSE)(version=1.7))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.base/java.lang.Thread.run(Thread.java:834)
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 11.564 s <<< FAILURE! - in org.atteo.classindex.RunOSGiContainerIntegrationTest
ptahchiev commented 4 years ago

Hi @sentinelt I committed one more change and added a test-case. Please review.