私はプロジェクトで乙女座の構成の問題を解決してきましたが、協力を拒否するライブラリが1つあります-Apache速度です。
したがって、私のバンドルのマニフェストは次のとおりです (一部の内部ライブラリの名前を変更または削除しました)。
Manifest-Version: 1.0
Web-ContextPath: blah
Bundle-ManifestVersion: 2
Bundle-Name: thebundle
Bundle-SymbolicName: blahblah
Bundle-Version: 0.1.0
Bundle-Activator: blah.Activator
Import-Package: mydatasource,
javax.crypto,
javax.jms;version="[1.1.0,2.0.0)",
javax.naming;version=0,
javax.naming.directory;version=0,
javax.servlet;version="[2.6.0,2.6.0]",
javassist.util.proxy;version="[3.15.0.GA,3.15.0.GA]",
javax.servlet.http;version="[2.6.0,2.6.0]",
org.hibernate.validator;version="[4.2.0.Final,4.2.0.Final]",
org.osgi.framework;version="[1.7.0,1.7.0]",
org.osgi.util.tracker,
org.slf4j.impl;version="[1.7.2,1.7.2]"
Export-Package: .... (stuff removed)
Bundle-ClassPath: .,
WEB-INF/classes,
WEB-INF/lib/velocity.jar <--- THIS IS APACHE VELOCITY
WEB-INF/lib/blahblah.jar
Import-Bundle: org.eclipse.virgo.web.dm;version="3.5.0.RELEASE";resolution:=optional,
a bunch of other bundles I've removed
そして、長いスタック トレースの最後に次の例外が発生します。
Caused by: java.lang.ClassNotFoundException: org.apache.velocity.exception.VelocityException
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:135)
私は、velocity.jar が私のバンドルで公開されることを確認しました。他のライブラリに問題はありません。速度にはいくつかのクラスが見られるように見えますが、他のクラスには見られないようです。個々のベロシティ パッケージをすべて Import-Package の下に取り込もうとしましたが、効果はありません。私は厳しい言葉を試しましたが、効果はありません。