尝试在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)
问题是我的包正在导入以下包com.springsource.org.apache.commons.collections; version="3.2.1"
搜索spring EBR时,我发现bundle包含所需的Class。
我使用了监视工具来确保捆绑包正在运行。
可能是什么问题?
问候?
答案 0 :(得分:4)
根据您所写的内容,您将导入包 com.springsource.org.apache.commons.collections ,但这是一个Spring构建的 org.apache的OSGi版本。 commons.collections jar文件。它是一个捆绑,而不是包。
您的捆绑包必须导入 org.apache.commons.collections ,这是由 com.springsource.org.apache.commons.collections 捆绑包提供的。假设您已经将Spring包提供给运行时,您只需要修复import语句。
在现有的清单中,更改(在“导入 - 包”部分下):
com.springsource.org.apache.commons.collections;version="3.2.1"
到
org.apache.commons.collections;version="3.2.1"
答案 1 :(得分:2)
您的软件包无法导入软件包com.springsource.org.apache.commons.collections
,因为没有此类软件包。您可能意味着您已使用该名称安装捆绑包。
错误表示您的软件包不会导入软件包org.apache.commons.collections
,即它必须出现在软件包的Import-Package
语句中的某个位置。
答案 2 :(得分:-1)
将commons-collections jar文件添加到构建路径将解决此问题。