加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

用gcj编译java和XStream. (例外:无法创建XmlPullParser)

发布时间:2020-12-14 19:23:40 所属栏目:Java 来源:网络整理
导读:我正在增强一个客户,这是一个更大的项目的一部分.由于速度不足,我被迫切换到CNI,因此我必须使用GNU-gcj编译器生成本机代码(gnu 4.6.3). 编译和链接工作正常(感谢-findirect-dispatch标志),我没有任何问题执行输出. 但是当涉及到客户端和服务器之间的通信时,
我正在增强一个客户,这是一个更大的项目的一部分.由于速度不足,我被迫切换到CNI,因此我必须使用GNU-gcj编译器生成本机代码(gnu 4.6.3).

编译和链接工作正常(感谢-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目录链接到该函数可以找到并访问它的可执行文件的方法,就应该解决问题.
你们中的任何人都知道这样做的方法吗?

解决方法

我认为xmlpull需要一个可以使用xpp3作为其实现的实现.
请将以下代码添加到您的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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读