applet中的JAXB - 找不到package-info.class

时间:2010-08-19 22:26:25

标签: java applet jaxb

我们有一个在applet中使用JAXB的Web应用程序。一切正常,除非首次创建JAXBContext,我们在applet控制台中看到以下内容:

Creating JAXBContext...
network: Connecting https://myserver.com/MyApp/CC.ccc with proxy=DIRECT
network: Connecting https://myserver.com/MyApp/CC.ccc with cookie "__utma=69126149.1559268128.1262793475.1265211768.1271711769.3; JSESSIONID=723072c1c4bbc2598e402b3f24a5d12f3324"
network: Cache entry not found [url: https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class, version: null]
network: Connecting https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class with proxy=DIRECT
network: Connecting http://myserver.com:443/ with proxy=DIRECT
network: Connecting https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class with cookie "__utma=69126149.1559268128.1262793475.1265211768.1271711769.3; JSESSIONID=723072c1c4bbc2598e402b3f24a5d12f3324"

这种情况总共发生了20次,并且大大减慢了我们的应用程序。

我正在使用“xjc”ant任务(com.sun.tools.xjc.XJCTask)在com / comm / servlet / generated / package中将我们的模式编译为Java。代码生成正常,但没有package-info.java。如果我手动创建此文件并编译和打包代码,则JAR文件中缺少package-info.class。

这是我的XJC任务:

<target name="generateJAXBSource">
 <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
   <classpath>
     <fileset dir="lib/jaxb" includes="*.jar" />
   </classpath>
 </taskdef>

 <xjc schema="resources/requests/111.xsd" 
  destdir="src" 
  package="com.comm.servlet.generated"/>  
</target>

我的XSD看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:xml="http://www.w3.org/XML/1998/namespace">
 <xs:import namespace="http://www.w3.org/XML/1998/namespace" />

 <xs:element name="InfoResponse">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="WorkQueueItem" maxOccurs="unbounded" />
   </xs:sequence>
  </xs:complexType>
 </xs:element>

                                                                                   

我一直在谷歌上搜索,但似乎无法弄清楚如何解决这个问题。

我尝试了here提议的解决方法,以确保编译package-info.java:

    

......但没有运气。

我可以指示JAXB不要查找package-info.class吗?

如何确保手动创建的package-info.java最终出现在JAR文件中?

感谢。

1 个答案:

答案 0 :(得分:0)

您的JAXB实现正在寻找package-info.class来处理模型中可能存在的任何包级别注释。没有标准方法可以阻止JAXB实现查找包级别注释。

添加package-info类(与模型类在同一个包中)似乎是一种合理的解决方法。

package-info是否无法为您编译(如果是这样,您得到的错误)?或者它只是没有出现在你的JAR中(如果是这样你是如何构建你的JAR的那样的)?