我们的一个类使用jdk 1.6的捆绑jaxb api。当我尝试使用maven编译它时(JAVA_HOME设置为JDK 1.6并且它在IDE中显示maven使用JDK 1.6运行)我得到jaxb库的类找不到错误。有问题的类存在于JDK 1.6 lib文件夹下的rt.jar中。任何想法???
答案 0 :(得分:2)
嗯......错误是由于使用了一个sun内部类,这在maven编译期间是不可用的。虽然这是一个有趣的场景......
我的项目使用sun的内部JAXB库提供的NamespaceMapper。它在非mavenized eclipse环境中编译(带有警告),因为rt.jar在类路径中。我们开始对这个项目进行整合,突然间我得到了一个ClassNotFound。经过一些谷歌搜索,我遇到了这两个帖子,让我朝着正确的方向前进。
http://forums.java.net/jive/thread.jspa?threadID=24225
http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PK88316
BottomLine:不要使用内部库(包名称中包含内部库)。
答案 1 :(得分:1)
尝试将此插件添加到您的pom.xml Maven构建部分:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
更新:这不起作用。
你试过这个吗?
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>