簡體   English   中英

JAR 文件中的 jaxb.properties

[英]jaxb.properties within a JAR file

我使用的是 JAXB 版本 2。我使用的是 Sun 版本,以便可以使用標准實現無法使用的名稱空間的替換。 當我的類位於應用程序的同一個 package 並且 jaxb.properties 文件與 model 類一起放置時,這一切都可以正常工作。

當我將這些全部移動到一個單獨的庫中時,一個 jar 文件,然后命名空間替換失敗到 function 並且所有命名空間繼續是元帥上的 ns1。 所以對我來說,它似乎沒有選擇我的 jaxb.properties 文件中定義的上下文工廠定義,並且默認為標准 Java 版本。

沒有 jaxb.properties not found 拋出異常。

知道可能發生了什么或如何解決嗎? 謝謝閱讀。

您的設置

當我將這些全部移動到一個單獨的庫中時,一個 jar 文件,然后命名空間替換失敗到 function 並且所有命名空間繼續是元帥上的 ns1。

在此設置中,您在同一個 jar 文件中擁有 model 類和jaxb.properties 您需要確保 jaxb.properties 仍然與您的 model 類位於相同的 package 中:

  • com\example\Foo.class
  • com\example\Bar.class
  • com\example\jaxb.properties

沒有 jaxb.properties not found 拋出異常。

找到您的 jaxb.properties 了嗎?

當 jaxb.properties 文件不存在時,不會引發異常,因為 JAXB 運行時將默認為 JAXB impl(通過測試查找META-INF/services機制,或者您可以通過測試找到/服務機制。您的 jaxb.properties 文件是無效的 JAXBContextFactory 條目,這將創建如下異常:

javax.xml.bind.context.factory=INVALID_ENTRY

會導致以下異常:

Exception in thread "main" javax.xml.bind.JAXBException
 - with linked exception:
[java.lang.ClassNotFoundException: INVALID_ENTRY]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:187)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:331)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
    at forum22.Demo.main(Demo.java:10)
Caused by: java.lang.ClassNotFoundException: INVALID_ENTRY
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:481)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:185)
    ... 4 more

我的 JAR 文件有問題。 我已將 package-info.java 復制到我的 JAR 中,但未復制已編譯的 package-info.class。

包括 package-info.java 和.class 都解決了這個問題。

感謝您的閱讀,非常感謝您的回復。

您是否嘗試過將其放在 jar 文件的META-INF/services目錄中?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM