osgi 번들을 작성했습니다. 여기에는 다음과 같이 서비스 제공자가 포함 된 jar (bsf-all.jar)에 대한 종속성이 있습니다 (META_inf/services/아래). 내가 OSGI 콘솔을 통해 내 번들의 상태를 검사 할 때서비스 제공자 및 OSGI 문제
bsh.engine.BshScriptEngineFactory
com.sun.script.freemarker.FreeMarkerScriptEngineFactory
com.sun.script.groovy.GroovyScriptEngineFactory
com.sun.script.jacl.JaclScriptEngineFactory
com.sun.script.jaskell.JaskellScriptEngineFactory
com.sun.script.java.JavaScriptEngineFactory
com.sun.phobos.script.javascript.RhinoScriptEngineFactory
com.sun.phobos.script.javascript.EmbeddedRhinoScriptEngineFactory
com.sun.script.jawk.JawkScriptEngineFactory
com.sun.script.jelly.JellyScriptEngineFactory
com.sun.script.jep.JepScriptEngineFactory
com.sun.script.jexl.JexlScriptEngineFactory
com.sun.script.jruby.JRubyScriptEngineFactory
com.sun.script.judo.JudoScriptEngineFactory
com.sun.script.juel.JuelScriptEngineFactory
com.sun.script.jython.JythonScriptEngineFactory
com.sun.script.ognl.OgnlScriptEngineFactory
org.pnuts.scriptapi.PnutsScriptEngineFactory
com.sun.script.scheme.SchemeScriptEngineFactory
com.sun.script.velocity.VelocityScriptEngineFactory
com.sun.script.xpath.XPathScriptEngineFactory
com.sun.script.xslt.XSLTScriptEngineFactory
, " 서버 발생이 활성화되고 더 종속성 문제 .. 가 없다하지만 난 그것을 사용하려고하면 (서버 및 실행 후 의미) 클래스를 찾을 수 없음 "문제;
java.lang.ClassNotFoundException: com.sun.phobos.script.javascript.RhinoScriptEngineFactory
이 특정 클래스 내 종속 항아리 (BSF-all.jar)에 그 클래스는 .. 서비스 제공 업체를 통해 내가은 OSGi와 자바 서비스 제공 업체와 클래스 로딩 문제가 의심 을 노출 ..
내 pom.xml은 다음과 같습니다.
<dependencies>
<dependency>
<groupId>org.apache.bsf</groupId>
<artifactId>bsf-all</artifactId>
<version>${bsf.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
<version>1.6R7</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Export-Package>
org.apache.bsf.*,
org.mozilla.javascript.*,
org.pnuts.scriptapi.*,
com.sun.script.*,
com.sun.phobos.script.*,
bsh.engine.*,
javax.script.*,
</Export-Package>
<Import-Package>
com.sun.*
</Import-Package>
<DynamicImport-Package>*</DynamicImport-Package>
<Embed-Dependency>js;scope=compile|runtime;inline=false;</Embed-Dependency>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
나는 Equinox OSGi 구현을 사용하고 있습니다. 어떻게 위의 문제를 극복하기 위해 POM을 편집 할 수 있습니까?
은 bsf-all.jar OSGi 번들 (의미 : META-INF/MANIFEST.MF 파일을 가짐)입니까? – thobens
서비스 제공 업체는 OSGi에서 작동하지 않지만 스크립트 엔진을 수동으로 설정하여 스크립트 엔진을 사용할 수 있습니다. ScriptEngineFactory.registerEngineName (String name) - 한 번에 의존성 작업을 시도하는 것이 좋습니다. 또한 모든 것을 임베드하는 대신 개별 Jar로 래핑 해보십시오 (즉, 각 개별 종속성을 번들로 바꾸려면 pax-wrap을 참조하십시오). – earcam
"서비스 제공 업체가 OSGi에서 작동하지 않지만 수동으로 ScriptEngineFactory.registerEngineName (문자열 이름)을 설정하여 이러한 스크립트 엔진을 사용할 수 있습니다.".. 수동으로 등록하는 것이 좋습니다 ... – Ratha