簡體   English   中英

來自xmlbeans的RuntimeException - 找不到已編譯的模式

[英]RuntimeException from xmlbeans - can't find compiled schema

我在執行一些依賴於生成的xmlbeans類的代碼時遇到了RuntimeException。 我無法弄清楚這是不是:

  • 我在代碼生成或打包過程中遺漏了一些東西
  • 缺少運行時依賴項
  • 一個誤導性的錯誤信息,我應該在其他地方尋找。

xbean.jar版本在構建和執行環境中是相同的。 有人見過這個或有任何想法嗎?

謝謝。

...snip...
Caused by: java.lang.RuntimeException: Could not instantiate SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException): is the version of xbean.jar correct?
    at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.loadTypeSystem(Unknown Source)
    at schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.TypeSystemHolder.(Unknown Source)
    ... 38 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    ... 40 more
Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Could not locate compiled schema resource schemaorg_apache_xmlbeans/system/s2B8331230CBD98F4933B0B025B6BF726/index.xsb (schemaorg_apache_xmlbeans.system.s2B8331230CBD98F4933B0B025B6BF726.index) - code 0
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.(SchemaTypeSystemImpl.java:1504)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.(SchemaTypeSystemImpl.java:183)
    ... 44 more
...snip...

約翰的答案對我來說是一個很好的暗示。 我使用xmlBeans生成Java類,並在我的項目中手動將源文件復制到“noNamespace”之外進行修改。 遺憾的是,我沒有意識到“schemaorg_apache_xmlbeans”文件夾中也生成了類文件,並且沒有復制它們。
切換到生成的jar文件的使用后,一切正常。

我之前從未使用過該庫,但我可以猜測發生了什么。 有了這個資格賽(也就是說,我只是做了這個,但是已經7個小時了,沒有其他人做過任何事情)......

陳述顯而易見:某些東西已被編譯到某處並且無法加載。 我不認為這個東西在jar文件中; 我猜這是你的資源之一被編譯/緩存到某個位置。

我猜也是:

  • 它是在一個無法加載的地方編譯的(搞砸了classpath / config)
  • 在編譯的內容和想要加載的內容之間進行版本控制是錯誤的

您是否在編譯和加載/運行之間更改了某些內容(例如架構版本?)?

你可以刪除已編譯的版本並重新編譯然后嘗試重新加載嗎?

你能在文件系統中找到編譯后的版本嗎?

為此,您可以嘗試

grep“s2B8331230CBD98F4933B0B025B6BF726”`find .`

從一些合適的目錄。

你能在類/資源上做一個md5導致編譯和運行時環境出現問題嗎? 他們匹配嗎?

希望那里的某些東西可以幫助或觸發思想。

當有一個腳本(ant,maven,...)處理XMLBeans編譯並且另一個機制用於編譯和運行其余代碼時,我經常看到這個問題。 有時,一個部分將刪除XMLBeans在堆棧跟蹤中查找的生成文件,但是將保留生成的XMLBeans Java文件,以便所有內容都可以編譯並且看起來很好。

我在使用選項輸出源文件時也看到了這一點,但不是類文件。 非Java源文件僅直接生成到XMLBeans生成的類文件夾或jar文件中。

這些類文件在resources / schemaorg_apache_xmlbeans目錄中生成。 我已經看到了xmlbeans行為,其中生成的ant腳本未能在它創建的jar中包含此目錄(可能是由於一個錯誤?)檢查它是否已包含在jar中。 您可以手動重新jar,或檢查代碼生成命令行選項。

暫無
暫無

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

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