我能夠在IDE(IntelliJ)中正確運行Java程序;但是,當我嘗試從命令行運行相同的程序時,它會失敗。拋出的錯誤是:從命令行運行java程序時無法加載資源
RuntimeUnmarshallException: org.xml.sax.SAXParseException; schema_reference.4: Failed to read schema document 'file:/home/Experiments/file:/home/path/to/jar/my.jar!/configuration.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
堆棧跟蹤指出,問題就在這裏:
String SCHEMA_FILE_PATH = "configuration.xsd";
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(SCHEMA_FILE_PATH); // <- breaks here
return new File(resource.getFile());
我有一個無法找到存儲在被標記爲資源目錄架構文件根在我的IDE。我敢打賭,當我從命令行運行時,因爲我從一個不同的工作目錄運行,它不知道在哪裏看。我已經嘗試在命令行上設置類路徑,以便能夠查看包含模式的目錄,但這沒有幫助。我想我可以將工作目錄設置爲當我從IDE運行時的工作目錄,但這看起來像是一個可怕的設計選擇。
感謝您的任何幫助。
編輯:我剛剛確認了configuration.xsd文件包含在罐子裏,但不管是什麼原因,似乎在奇怪的地方尋找它...
你是否運行打包的'.jar'? – Pyranja
是的。我使用以下命令運行它:'java -jar path/to/the.jar - 輸入東西' – mjnichol