maven-pax-provision + equinox:java.lang.Long无法强制转换为java.lang.String

时间:2012-12-05 13:35:23

标签: maven osgi equinox apache-felix pax-runner

我正在经历一些扼杀,不可重复的行为。

我正在开发一个OSGi应用程序,使用maven-bundle-plugin和maven-pax-plugin在Apache Felix和Eclipse Equinox中运行它。

从今天起,当我尝试启动或停止捆绑时,我有时会收到以下错误,例如

lb工作正常

输出(摘录):

0|Active     |    0|OSGi System Bundle (3.8.1.v20120830-144521)
1|Active     |    1|Console plug-in (1.0.0.v20120522-1841)
2|Active     |    1|Apache Felix Gogo Command (0.12.0)
3|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
4|Active     |    1|Apache Felix Gogo Shell (0.10.0)
5|Active     |    5|OSGi R4 Core Bundle (4.1.0)
6|Active     |    5|slf4j-api (1.6.6)
7|Active     |    5|Logback Core Module (1.0.7)
8|Active     |    5|Logback Classic Module (1.0.7)

但是当我尝试停止6时,例如我得到以下异常:

g! stop 6
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
at org.eclipse.equinox.console.commands.EquinoxCommandsConverter.convert(EquinoxCommandsConverter.java:61)
at org.apache.felix.gogo.runtime.CommandProcessorImpl.convert(CommandProcessorImpl.java:254)
at org.apache.felix.gogo.runtime.CommandSessionImpl.convert(CommandSessionImpl.java:374)
at org.apache.felix.gogo.runtime.Reflective.coerce(Reflective.java:389)
at org.apache.felix.gogo.runtime.Reflective.coerce(Reflective.java:310)
at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:110)
at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
at org.apache.felix.gogo.shell.Console.run(Console.java:62)
at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
at org.apache.felix.gogo.shell.Activator.run(Activator.java:75)
at java.lang.Thread.run(Thread.java:722)

每个Bundle都会发生这种情况 菲利克斯的一切都很好。

任何想法?

1 个答案:

答案 0 :(得分:3)

这是equinox命令包中的错误。它无法正确转换类型。 gogo runtime打印printStackTrace并使用felix命令正确执行命令。