编译和链接工作正常(感谢-findirect-dispatch标志),我没有任何问题执行输出.
但是当涉及到客户端和服务器之间的通信时,客户端会立即断开连接.原因:
[XStreamClient Reader] WARN – Client disconnected (Exception:
com.thoughtworks.xstream.io.StreamException: Cannot create
XmlPullParser)
(此Exeption仅出现在客户端的gcj编译版本中.当我使用java解释器运行代码时 – 事情运行良好(但速度太慢^^))
– >具有挑战性的部分是我无法检索发生此异常的源代码,因为它位于客户端使用的预编译(Java类文件)库中. (我无法联系该图书馆的作者)
我想该库调用XppReader然后尝试创建一个XmlPullParser类并失败.
我通过解压缩它们并编译创建的* .class文件然后链接目标文件来绑定XStream(vers.1.4.3)库(以及其他所需的* .jars).这似乎也适用于所有其他图书馆. (我的操作系统= Ubuntu)
我已经做了什么来克服这个问题:
我搜索了XStream / XmlPullParser和gcj,并用不同版本替换了“xmlpull” – 和“kxml2”文件.
但没有任何效果.
你们中的任何人都知道可能是什么解决方案吗?
编辑:
我发现XmlPullParser创建失败的原因是XmlPullParserFactory.newInstance函数无法找到带有/services/org.xmlpull.v1.XmlPullParserFactory文件的Meta-INF目录.
这是因为我只编译并链接了* .jar的* .class文件.
因此,只要我找到了将Meta-INF目录链接到该函数可以找到并访问它的可执行文件的方法,就应该解决问题.
你们中的任何人都知道这样做的方法吗?
解决方法
请将以下代码添加到您的pom.xml中,如果需要,请将这些jar文件添加到需要它们的软件中.
<dependency> <groupId>xmlpull</groupId> <artifactId>xmlpull</artifactId> <version>1.1.3.1</version> </dependency> <dependency> <groupId>xpp3</groupId> <artifactId>xpp3</artifactId> <version>1.1.3.3</version> </dependency>