模块jta和java.sql将包javax.transaction.xa导出到模块dom4j
如您所见,两个模块jta
和java.sql
导出相同的包javax.transaction.xa
。但是,jta
中的程序包具有我需要的类,这些类在java.sql
中不存在。我根本不需要java.sql
模块,但是我需要java.sql.SQLException
。
是否可以阻止java.sql
导出javax.transaction.xa
?
答案 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
标志来仅编译所需的目录和类路径。类路径也可以用逗号分隔。