java编译后的文件出现xx$1.class的原因及解决方式
java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果
例如:
TestFrame$1.class是匿名内部类的编译结果,TestFrame$MyJob.class则是内部类MyJob编译后得到的.
使用内部类可以隐藏一些实现的细节,等等,还有其他一些好处.使用匿名类的时候,要注意代码的可读性
补充知识:JNI之javah使用时报错:找不到类文件
初学java,想使用JNI,在用javah生成头文件时,总是报错找不到类;
看了javah的help,本来是很简单的,但是由于自己概念含糊,所以出错。
javah的命令行帮助:
用法:javah[选项]<类>其中[选项]包括:
-help输出此帮助消息并退出
-classpath<路径>用于装入类的路径
-bootclasspath<路径>用于装入引导类的路径
-d<目录>输出目录
-o<文件>输出文件(只能使用-d或-o中的一个)
-jni生成JNI样式的头文件(默认)
-version输出版本信息
-verbose启用详细输出
-force始终写入输出文件使用全限定名称指定<类>(例如,java.lang.Object)。
假如有这样的类:
packagemwic32; public classMain{ publicnativeStringGetICSN(intCommPort); static { System.loadLibrary("MwIc32.dll"); } publicstaticvoidmain(String[]args) { //TODOcodeapplicationlogichere } }
假如项目目录是:F:/NetBeansProjects,那么编译后生成的class文件会位于F:/NetBeansProjects/MwIC32/build/classes/mwic32现在希望用JAVAH生成头文件。
javah-classpathF:/NetBeansProjects/MwIC32/build/classesmwic32.Main
也就是说,指定类的路径时,应该以包所在路径为准,而不是具体类所在的子目录
以上这篇java编译后的文件出现xx$1.class的原因及解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。