在Karaf+Felix+OpenJDK8环境中加载nashorn脚本引擎时遇到问题:new ScriptEngineManager().getEngineByName(“nashorn”)
在该环境中返回null
。我使用该代码的测试成功通过,不管是由maven执行(在tje Linux/Debian服务器上html" target="_blank">安装相同的JDK)还是在我的Windows机器上的IDE中执行。
以下是我检查的步骤:
>
Karaf运行时使用JDK8,引用了正确的ext目录:
>ps aux grep karaf grep java
...-djava.ext.dirs=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext://usr/lib/jvm/java-8-openjdk-amd64/lib/ext://media/sf_development/app/apache-karaf-4.0.6/lib/ext.
在
中,org.osgi.framework.bootderation
属性包含jdk.nashorn.*
我的包还导入/需要jdk.nashorn
,felix成功地解析了这一点:
>bundle:Requirements my-bundle grep-a 1 nashorn
...
osgi.wiring.package;(osgi.wiring.package=jdk.nashorn)解析者:
OSGI.WIRING.Package;来自org.apache.felix.framework[0]
...
ScriptEngineManager的默认构造函数使用带有服务加载器机制的线程上下文类加载器。如果您的线程上下文类加载器没有委托给扩展类加载器,那么nashorn或任何其他只对扩展加载器可见的引擎都将找不到!有两种解决方案:
我正在尝试在Karaf2.3中安装并启动OSGi用户管理界面的ApacheFelix实现。3. 但是,这个包从来没有得到解决,我在开始时得到以下错误: 正如我在Karaf邮件列表中读到的,Karaf已经嵌入了OSGi概要API,但默认情况下不会导出所有包。我更改了文件以显式导出UserAdmin包: 包似乎是由Karaf导出的,正如我在运行
我正在尝试安装openjdk-8-jdk,建议使用以下命令: 我确实在packages.debian.org手册中找到了它,并试图告诉apt也从那里加载,就像在那个包的镜像页面上建议的那样,通过添加以下行到 /etc/apt/sources.list 但还是找不到包裹。我也试着换了。 http://deb.debian.org/debian网址 sid to buster或buster-backp
对于Java SE应用程序,我使用Apache Felix和weld-osgi。问题是在注入的bean中,我使用了包< code > javax . enterprise . context . ApplicationScoped 中的< code>@ApplicationScoped。但是在< code > weld-OSGi-bundle-2 . 1 . 2 . final 中没有这个包。 此
我们正在Karaf中部署我们的应用程序,并试图使用Flyway来处理数据库迁移,但它在运行时找不到我们的文件。我检查过的东西: > 当我为Flyway启用调试时,我可以看到它在类路径上找到了文件夹,但其中没有文件。 当408与安装的捆绑包匹配时,日志显示它正在查找正确的捆绑包。 我不确定还要查找什么,因为没有记录任何错误,而且它似乎正在查找它应该位于的文件夹,而不是sql文件。我假设这是一个清单类
我使用javax.validation和Hibernate验证器实现了一些代码。使用验证的单元测试工作良好。该构建生成OSGi包和特性,并在Karaf中运行。 “无法创建配置,因为找不到Bean验证提供程序。请将Hibernate Validator(RI)这样的提供程序添加到类路径中。” 我会包括stacktrace,但它对我来说没有什么用。大部分都在我的代码、junit和Paxexam中。 我
在ApacheKaraf中安装一个特性时,我遇到了如下使用约束冲突(Karaf框架是felix,版本是4.2.1) 无法解决。原因:包使用冲突:导入包:组织。阿帕奇。http。实体version=“0.0.0” 谷歌搜索之后,才知道“依赖链”有助于从根本上解决问题。但我不知道要在日志或osgi控制台中打印此依赖项链需要遵循哪些步骤 下面的URL中给出了依赖链示例:Hibernate和ApacheF