2010-08-19 31 views
1

我們有一個web應用程序,它使用applet中的JAXB。一切工作正常,除了第一次創建的JAXBContext的時候,我們看到的是小程序控制臺以下記錄:JAXB在一個applet中 - package-info.class not found

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> 

我一直在Google上搜索,但似乎無法弄清楚如何解決這個問題。

我試圖提出here確保package-info.java被編譯的解決方法:

...但沒有運氣。

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

如何確保我手動創建的package-info.java最終位於JAR文件中?

謝謝。

回答

0

您的JAXB實現正在尋找package-info.class來處理可能存在於您的模型中的任何包級別註釋。沒有標準的方法來阻止JAXB實現查找包級別註釋。

添加一個package-info類(與模型類在同一個包中)似乎是一個合理的解決方法。

軟件包信息無法爲您編譯(如果是的話,你會得到什麼錯誤)?或者它只是沒有出現在你的JAR中(如果是的話你如何構建你的JAR)?