java编译后的文件出现xx$1.class的原因及解决方式

论坛 期权论坛 脚本     
niminba   2021-5-23 02:34   2853   0

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)。

假如有这样的类:

package mwic32; 
public 
class Main { 
  
  public native String GetICSN( int CommPort); 
  static
  { 
    System.loadLibrary("MwIc32.dll"); 
  }   
 
  public static void main(String[] args) 
  { 
    // TODO code application logic here
   } 
} 

假如项目目录是:F:/NetBeansProjects,那么编译后生成的class文件会位于F:/NetBeansProjects/MwIC32/build/classes/mwic32现在希望用JAVAH生成头文件。

javah -classpath F:/NetBeansProjects/MwIC32/build/classes mwic32.Main

也就是说,指定类的路径时,应该以包所在路径为准,而不是具体类所在的子目录

以上这篇java编译后的文件出现xx$1.class的原因及解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持社区。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP