我可以从Java模块中排除导出的软件包吗?

时间:2018-06-23 18:43:37

标签: java java-9 jta java-module

  

模块jta和java.sql将包javax.transaction.xa导出到模块dom4j

如您所见,两个模块jtajava.sql导出相同的包javax.transaction.xa。但是,jta中的程序包具有我需要的类,这些类在java.sql中不存在。我根本不需要java.sql模块,但是我需要java.sql.SQLException

是否可以阻止java.sql导出javax.transaction.xa

2 个答案:

答案 0 :(得分:3)

JTA GitHub读取以下内容以确认@Alan在comment中所指出的内容-

  

此独立发行版的Java(TM)Java事务处理API(JTA)使用   Java Platform Module System“自动”模块的名称   java.transaction,以匹配JDK 9中使用的模块名称。   版本将包含完整的模块元数据。此外   javax.transaction.xa软件包现在归Java SE所有。

您可以使用Maven(例如)使用以下版本:-

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>javax.transaction-api</artifactId>
    <version>1.3</version>
</dependency>

这里是release notes for JTA1.3MR.


另外, JEP 320: Remove the Java EE and CORBA Modules 对此进行了详细说明-

  

... javax.transaction.xa包支持JDBC中的XA事务。   该"XA package"与JDBC在JDBC的java.sql模块中位于同一位置。   Java SE9。由于java.sql模块不可升级,因此无法升级   JTA的独立版本可以覆盖Java SE   版本的XA软件包

并进一步说明您的解决方案的可扩展性

  

...为了便于维护,可以将Java SE中的XA软件包移至   将来会使用其他不可升级的模块   在架构方面,它将与JDBC一起保留在Java SE中,   长期...

并按计划

  

在2018年初,JTA 1.3将被定义为仅包含CORBA   互操作包; JAR文件将进行相应的更新。

答案 1 :(得分:-1)

您可以使用javac -d -cp /PATHTOYOURFILE -d-cp标志来仅编译所需的目录和类路径。类路径也可以用逗号分隔。