我以为我掌握了一些事情,但显然没有。
所以我使用javac将.java转换为.class
javac KFile.java
然后我将jar文件转换为jar文件
jar cf HPLCData.jar KFile.class
然后我将.jar文件与launch4j一起包装,特别是保持'不要包装jar'未选中以向我提供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.classjavac KFile.class
答案 0 :(得分:2)
在 <!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Tabs - Default functionality</title>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#tabs" ).tabs();
});
</script>
</head>
<body>
<div id="tabs">
<ul>
<li><a href="#tabs-1">Nunc tincidunt</a></li>
<li><a href="#tabs-2">Proin dolor</a></li>
<li><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1">
<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
</div>
<div id="tabs-2">
<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>
</div>
<div id="tabs-3">
<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>
<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>
</div>
</div>
</body>
</html>
- 文件中,您似乎使用匿名内部类。因此,您的编译将生成多个.java
- 文件。除.class
外,还有KFile.class
,可能还有KFile$1.class
等。
所有这些都是执行程序所必需的,但您只是将KFile$2.class
添加到jar文件中,因此从jar中执行应用程序时找不到所有其他文件。
尝试KFile.class
在当前目录中包含所有类文件(如果只有当前项目中的那些文件,那将是最好的),然后一切都应该按预期工作。