use*_*892 4 java anonymous jar class
我hava在六个类中创建了一个可运行的jar文件:
Main:包含main方法,并在manifest中指定(我包括一个新行)
Main $ 1和Main $ 2:2主要类中的匿名内部类.(主要方法是2美元,但我认为这不重要.)
形成
Form $ 1:Form中的匿名内部类
WrapLayout
我在制作jar文件时指定了这些内部类,但是当我查看它时(我在mac上)内部类不在jar中!所以,当我运行它时,我得到了这个:
Exception in thread "main" java.lang.NoClassDefFoundError: Main$2
at Main.main(Main.java:64)
Caused by: java.lang.ClassNotFoundException: Main$2
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚出了什么问题.有人可以帮忙吗?
编辑:我想通了!事实证明,在美元符号前面需要一个转义字符(\),以便命令识别它们.
你已经找到了具体的答案,但这里有一个更普遍的答案.
当您修改程序时,具有自动生成的名称(例如Main$2)的类集将会更改.此外,如果将类移动到命名包中,则jar文件必须具有并行目录结构.您不希望每次发生这种情况时都必须更新makefile或构建脚本.相反,您应该使用javac -d为已编译的类文件指定目标目录,然后查看整个层次结构.
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |