尝试在Eclipse Equinox上运行grails应用程序时出现运行时错误.
java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Run Code Online (Sandbox Code Playgroud)
问题是我的bundle正在导入以下包com.springsource.org.apache.commons.collections; version="3.2.1"
当搜索spring EBR时,我发现bundle包含所需的Class.
我使用监视工具来确保捆绑包正在运行.
可能是什么问题?
问候 ?
根据您所写的内容,您正在导入包com.springsource.org.apache.commons.collections,但这是 Spring 构建的org.apache.commons.collections jar 文件的 OSGi 版本。它是一个捆绑包,而不是一个包。
您的捆绑包必须导入org.apache.commons.collections ,它由com.springsource.org.apache.commons.collections捆绑包提供。假设您已经向运行时提供 Spring 包,您只需修复 import 语句即可。
在现有清单中,更改(在“导入包”部分下):
com.springsource.org.apache.commons.collections;version="3.2.1"
Run Code Online (Sandbox Code Playgroud)
到
org.apache.commons.collections;version="3.2.1"
Run Code Online (Sandbox Code Playgroud)