gpt4 book ai didi

java - 使用 gcj 编译的 java 和 XStream。 (异常 : Cannot create XmlPullParser)

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:56 24 4
gpt4 key购买 nike

我正在增强一个客户,这是一个更大项目的一部分。由于缺乏速度,我被迫切换到 CNI,因此我不得不使用 GNU-gcj 编译器 (gnu 4.6.3) 生成 native 代码。

编译和链接工作正常(感谢 -findirect-dispatch 标志)并且我在执行输出时没有任何问题。但是当客户端和服务端通信的时候,客户端马上就断开了。原因:

[XStreamClient Reader] WARN - Client disconnected (Exception:com.thoughtworks.xstream.io.StreamException: Cannot createXmlPullParser)

(此异常仅出现在客户端的 gcj 编译版本中。当我使用 java 解释器运行代码时 - 一切正常(但太慢^^))--> 具有挑战性的部分是我无法检索发生此异常的源代码,因为它位于客户端使用的预编译(Java 类文件)库中。 (而且我无法联系到那个图书馆的作者)

我猜图书馆调用了 XppReader然后尝试创建 XmlPullParser 类并失败。

我绑定(bind)到 XStream(版本 1.4.3)库(和其他所需的 *.jars),方法是解压它们并编译创建的 *.class 文件,然后链接目标文件。这似乎也适用于所有其他图书馆。 (我的操作系统=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>

关于java - 使用 gcj 编译的 java 和 XStream。 (异常 : Cannot create XmlPullParser),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com