相关疑难解决方法(0)

使用Java EE API替换已弃用的JPMS模块

Java 9 弃用了六个包含Java EE API的模块,它们很快被删除:

  • javax.activation包的java.activation
  • java.corbajavax.activity,javax.rmi,javax.rmi.CORBA,和org.omg.*
  • javax.transaction包的java.transaction
  • 包含所有javax.xml.bind.*包的java.xml.bind
  • java.xml.wsjavax.jws,javax.jws.soap,javax.xml.soap,和所有javax.xml.ws.*
  • javax.annotation包的java.xml.ws.annotation

哪些维护的第三方工件提供了这些API?它们提供这些API或它们必须提供的其他功能并不重要 - 重要的是,它们是这些模块/包的直接替代品吗?

为了更容易收集知识,我回答了迄今为止我所知道的并将答案作为社区维基.我希望人们能够扩展它,而不是写出自己的答案.


在您投票结束之前:

  • 是的,已经有一些关于单个模块的问题,这个问题的答案当然会复制这些信息.但AFAIK没有任何一点可以了解所有这些,我认为这些有很大的价值.
  • 提出图书馆建议的问题通常被认为是偏离主题的,因为"他们倾向于吸引自以为是的答案和垃圾邮件",但我不认为这适用于此.明确描述了一组有效的库:它们必须实现特定的标准.除此之外别无其他,所以我没有看到很多意见和垃圾邮件的风险.

java java-ee java-9 java-module

150
推荐指数
6
解决办法
5万
查看次数

在打包为JAR后无法创建SAAJ元工厂

为了测试应用程序,我正在创建SOAP消息.这可以直接从Eclipse(Oxygen.1a)运行,但在打包为runnable jar(选项:将所需的包打包到生成的jar中)后,我收到以下错误:

javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
    at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.java:94)
    at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:138)
Run Code Online (Sandbox Code Playgroud)

触发:

MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
Run Code Online (Sandbox Code Playgroud)

所以我理解MessageFactory使用sun包

static private final String DEFAULT_META_FACTORY_CLASS =
    "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl";
Run Code Online (Sandbox Code Playgroud)

但是我绝对无能为力地知道为什么它在打包到可运行的JAR之后无法找到这个类.任何提示或方向都会大大减少.

java eclipse jar saaj

9
推荐指数
1
解决办法
8210
查看次数

迁移到 Java 11 时如何替换 JAX-WS

我们开发的 Java 应用程序仍然需要 Java 8 才能运行,并且计划支持 Java 11。为此,我们必须找到与已删除的 xml 和 Web 服务相关的类的替代品(请参阅JEP 320)。我们下载了所需的所有 jar,但是当我们尝试连接到 Web 服务时,出现以下错误:

MASM0004: No <tubelines> section found in the default [ jaxws-tubes-default.xml ] configuration file
Run Code Online (Sandbox Code Playgroud)

比较 Java 8 中的 jaxws-tubes-default.xml 文件和我们收集的 jar 文件,我们发现它们的内容几乎相同,除了包名称略有不同。

据我们所知,发生这种情况是因为文件解组器将 xml 内容读取到类的错误属性中com.sun.xml.ws.runtime.config.MetroConfig。从 xml 读取的对象Tubelines未设置在tubelines属性上。相反,它是在any属性上设置的。

深入调试代码,我们可以看到在 Java 8 上该tubelines属性与命名空间“http://java.sun.com/xml/ns/metro/config”相关联,但在 Java 11 上则不然。

我们无法进行更深入的挖掘,也无法在网络上找到任何相关信息。

有谁知道可以帮助我们按预期解析文件吗?

编辑: 有人建议我的问题与重复,但事实并非如此。链接的问题解释了 Java 11 带来的变化。我的问题是关于我在执行这些步骤时发现的问题。我们遇到的问题并未在该问题中得到解决。

java jax-ws java-11

5
推荐指数
0
解决办法
4872
查看次数

标签 统计

java ×3

eclipse ×1

jar ×1

java-11 ×1

java-9 ×1

java-ee ×1

java-module ×1

jax-ws ×1

saaj ×1