我以爲我對事物有把握,但顯然不是。Jar對EXE的困擾,對classpath的理解
所以我使用javac轉成名爲.java的.class
javac KFile.java
我再罐子打開類文件到一個jar文件
jar cf HPLCData.jar KFile.class
我再包了。 jar文件與launch4j,特別是保持'不包裝罐'未經檢查,爲我提供HPLCData.exe
。
從命令行,如果我運行的代碼與java KFile
它的作品就像一個魅力。如果我運行HPLCData.exe,我得到這個運行時錯誤,這似乎與我的目錄掃描器相關聯。
Exception in thread "main" java.langNoClassDefFoundError: KFile$1
at KFile.addTree(KFile.java:162)
at KFile.main(KFile.java:48)
Caused by java.lank.ClassNotFoundEception: KFile$1
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass*Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unkonwon Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
.... 2 more
對我來說,這似乎是一個錯誤的東西,因爲如果我運行java腳本本身它工作正常,我做的,但是,這裏是下面的代碼的部分。我只是認爲如果我創建一個包含類的jar文件,包裝jar文件的.exe如何找不到該類?
static void addTree(Path directory, final Collection<Path> all)
throws IOException {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
all.add(file);
return FileVisitResult.CONTINUE;
}
});
編輯
對於它的價值,我想我是瘋了,因爲有時.exe文件將在原來的目錄在我的.jar和.class文件是工作。我認爲他們有一些關係,但我開始注意到,當它工作時,我可以直觀地看到創建KFile $ 1.class文件。
我離開了這個,因爲,說實話,它使我聽起來像一個堅果,我現在不能再現它。
哦有趣。 KFile $ 1.class出現在我使用 javac KFile.class
因此,讓我嘗試只是將這些添加到我的jar文件然後。
你可以運行java -jar HPLCData.jar – HRgiger
'沒有主要的清單屬性,在HPLCData.jar中' – Chemistpp