将 osgi jar 从 3.8.1 升级到 3.10.1 的问题
Issues in upgrading osgi jar from 3.8.1 to 3.10.1
我正在尝试升级我的项目中的 OSGI 版本,但在启动我的应用程序时遇到以下异常。
我在 Activator class 的 start() 中遇到以下异常:
原因:java.lang.IllegalArgumentException:声明无效:osgi.native; native.paths:列表="Some_DLL's_are_specified_here";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))"
..
...
....
原因:org.osgi.framework.BundleException:清单无效 header Require-Capability:osgi.native; native.paths:列表="Some_DLL's_are_specified_here";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))"
..
...
....
由以下原因引起:org.osgi.framework.InvalidSyntaxException:“(未知)))(osgi.native.processor~=x86_64))”处的无效值:(|(&(|(osgi.native .osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~= Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native.osname~=Windows 10)(osgi.native .osname~=Windows NT(未知)))(osgi.native.processor~=x86_64)))
..
...
....
根异常:
java.lang.IllegalArgumentException:声明无效:osgi.native; native.paths:列表="<>";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))"
最后我在控制台上收到以下异常:
java.lang.IllegalStateException: 无法获取应用服务。确保 org.eclipse.core.runtime 包已解析并启动(请参阅 config.ini)。
有人熟悉这个吗?或者有什么建议吗?
注意:我在我的项目中用 org.eclipse.osgi_3.8.1 替换了 org.eclipse.osgi_3.10.1 jar。
捆绑包是否有 Bundle-NativeCode header?我怀疑它被映射到 osgi.native 要求并且值 Windows NT (unknown)
没有被正确转义为 Windows NT \(unknown\)
。因此字符串中的 parens 导致表达式错误。
您必须有一个带有 Bundle-NativeCode header 且属性为 osname="Windows NT (unknown)" 的捆绑包。 Equinox 框架中存在一个错误,即在为 osgi.native 命名空间生成过滤器时不会转义此类值。我打开了错误 https://bugs.eclipse.org/bugs/show_bug.cgi?id=492890 来修复它。
在等待修复期间,我建议您从属性列表中删除 osname="Windows NT (unknown)"。您看起来已经在使用应该涵盖所有 Windows 变体的 win32 别名。
我正在尝试升级我的项目中的 OSGI 版本,但在启动我的应用程序时遇到以下异常。
我在 Activator class 的 start() 中遇到以下异常:
原因:java.lang.IllegalArgumentException:声明无效:osgi.native; native.paths:列表="Some_DLL's_are_specified_here";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))" .. ... .... 原因:org.osgi.framework.BundleException:清单无效 header Require-Capability:osgi.native; native.paths:列表="Some_DLL's_are_specified_here";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))" .. ... .... 由以下原因引起:org.osgi.framework.InvalidSyntaxException:“(未知)))(osgi.native.processor~=x86_64))”处的无效值:(|(&(|(osgi.native .osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~= Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native.osname~=Windows 10)(osgi.native .osname~=Windows NT(未知)))(osgi.native.processor~=x86_64))) .. ... .... 根异常: java.lang.IllegalArgumentException:声明无效:osgi.native; native.paths:列表="<>";过滤器:="(|(&(|(osgi.native.osname~=win32)(osgi.native.osname~=Windows 8)(osgi.native.osname~=Windows 8.1)(osgi.native.osname~=Windows 服务器 2012)(osgi.native.osname~=Windows 服务器 2012 R2)(osgi.native。 osname~=Windows 10)(osgi.native.osname~=Windows NT (未知)))(osgi.native.processor~=x86_64)))"
最后我在控制台上收到以下异常:
java.lang.IllegalStateException: 无法获取应用服务。确保 org.eclipse.core.runtime 包已解析并启动(请参阅 config.ini)。
有人熟悉这个吗?或者有什么建议吗?
注意:我在我的项目中用 org.eclipse.osgi_3.8.1 替换了 org.eclipse.osgi_3.10.1 jar。
捆绑包是否有 Bundle-NativeCode header?我怀疑它被映射到 osgi.native 要求并且值 Windows NT (unknown)
没有被正确转义为 Windows NT \(unknown\)
。因此字符串中的 parens 导致表达式错误。
您必须有一个带有 Bundle-NativeCode header 且属性为 osname="Windows NT (unknown)" 的捆绑包。 Equinox 框架中存在一个错误,即在为 osgi.native 命名空间生成过滤器时不会转义此类值。我打开了错误 https://bugs.eclipse.org/bugs/show_bug.cgi?id=492890 来修复它。
在等待修复期间,我建议您从属性列表中删除 osname="Windows NT (unknown)"。您看起来已经在使用应该涵盖所有 Windows 变体的 win32 别名。