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)。
假如有这样的类:
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的原因及解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Java异常ClassCastException的解决
在说ClassCastException之前,先介绍下引用类型转换: 引用类型转换分为向上转型和向下转型两种: 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的:当父类引用指向一个子类对象时,便是向上转换: 使用格式: 父类类型 变量名 = new 子类类型(); 向下转型:父类类型向子类类型向下转换的过程,这个过程时强制:一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制转换的格式,便是向下转换: 使用格式: 子类类型 变量名 = (子类类型) 父类变量名;
-
解决java.lang.ClassCastException的java类型转换异常的问题
在项目中,需要使用XStream将xml string转成相应的对象,却报出了java.lang.ClassCastException: com.model.test cannot be cast to com.model.test的错误. 原因: 项目中应该是采用了热部署,devtools,因为累加载器的不同所以会导致类型转换失败 措施: 在pom.xml中将以下代码注释掉: <dependency> <groupId>org.springframework.boot</g
-
解决idea 项目编译后没有class文件的问题
问题 idea项目突然无法运行,提示找不到某个类.查看了编译输出目录out,发现没有class文件. 尝试解决 尝试删除out.重新导入项目.在gradle面板点击刷新,都没能解决问题. 问题解决 最后,点击Build->Rebuild Project解决.不明原因,先做下记录. 补充知识:IDEA项目无法引用本地Class类,而且各种报错 背景 今天从git 上下载下来的项目,在别的机器上都可以正常运行,然而到了我的机器上,就各种报错,而且本地的class文件也无法引用. 1.删掉项目,重新下
-
运行java的class文件方法详解
一.运行class文件 执行带main方法的class文件,命令行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: 复制代码 代码如下: java Test 如果执行的class文件是带包的,即在类文件中使用了:package <包名> 那应该在包的基路径下执行,命令行为: java <包名>.CLASS文件名 例如:PackageTest.java中,其包名为:com.ee2ee.test,对应的语句为: package
-
java编译后的文件出现xx$1.class的原因及解决方式
java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果 例如: TestFrame$1.class是匿名内部类的编译结果,TestFrame$MyJob.class则是内部类MyJob编译后得到的. 使用内部类可以隐藏一些实现的细节, 等等, 还有其他一些好处. 使用匿名类的时候, 要注意代码的可读性 补充知识:JNI之javah使用时报错:找不到类文件 初学java,想使用JNI,在用javah生成头文件时,总是报错找不到类: 看了javah的help,本
-
java迭代器移除元素出现并发修改异常的原因及解决
迭代器(Iterator的对象)主要用于遍历集合,体现的就是迭代器模式. Iterator接口定义了以下四种方法. boolean hasNext():如果集合还没遍历完就返回true. Object next():返回集合里的下一个元素. void remove():删除集合里上一次next方法返回的元素. void forEachRemaining(Consumer action):这是java8新增的默认方法,可用Lambda表达式遍历数组. 使用迭代器遍历元素时不能不能通过Collect
-
vue打包后出现空白页的原因及解决方式详解
目录 路由模式 history 路由模式 hash 总结 1. 修改路径 2. 更改路由模式 路由模式拓展 路由的hash和history模式的区别 打包路由选择 路由模式 history 新建项目什么都不动,路由模式:history, 直接npm run build打包 打包之后,直接打开dist文件里面的ndex.html可以看到页面是空白的,控制台是这样的. 再看看网页源码, 对比dist文件夹结构可以看到资源路径的引入是错误的,应该用'./'而不是'/' 那怎么修改打包之后的路径呢?查看
-
Java String.replace()方法"无效"的原因及解决方式
首先我们来看个例子 public class Demo1 { public static void main(String[] args) { String aa="abcd"; aa.replace("a","f"); System.out.println("输出结果是"+aa); } } 运行结果是什么呢?我们先看看这个方法的api 返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar 所以这里的结果
-
ASP.NET、SharePoint中另存文件的长文件名被截断的原因及解决办法
一个Word文档,或者是什么文件,文件名称超过15个汉字,或者一定长度的字母之后,上传到文档库是没有问题的,但是如果你想下载,使用[右键]-[另存为],就会发现保存框的文件名一栏中,就剩下15个汉字了,其他的都被省略了. 我就开始寻找解决的办法,直接点击文件,默认会用客户端程序打开,例如word文档,会使用word打开,发现文件名是正常的,然后使用word的另存为,正常. 使用moss的资源管理器视图,从视图中直接复制文件出来,正常. 唯独另存不正常,以上都是在IE6的环境测试的. 上网goog
-
Java加载property文件配置过程解析
这篇文章主要介绍了java加载property文件配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1 properties简介: properties是一种文本文件,内容格式为: key = value #单行注释 适合作为简单配置文件使用,通常作为参数配置.国际化资源文件使用. 对于复杂的配置,就需要使用XML.YML.JSON等了 2 java加载Properties: java加载properties主要通过2个util包下的
-
利用vscode调试编译后的js代码详解
前言 在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. vscode 是一个非常棒的编辑器,内置功能强大的调试能力.经过简单的设定,就可以对 js 文件进行调试.但有时我们想要调试的内容是经过编译的,当然我们可以直接调试编译后的代码.但经过编译压缩以后的代码,可读性很差,且也可能无法分模块查看了,有什么方法进行编译前的代码调试么?答案当然是肯定的. 下面话不多说了,来一起看看详细的介绍吧. vscode 的常规调试 vscode 的调试界面在窗口最左边: 最
-
如何使用IDEA查看java文件编译后的字节码内容
目录 首先编写一个java类StringDemo1.java 经过编译后,生成StringDemo1.class文件 使用jclasslib反编译工具 JDK版本映射 首先编写一个java类 StringDemo1.java public class StringDemo1 { public static void main(String[] args) { String str1 = "aaa" + "bbb"; System.o
-
CMD运行Intellij Idea编译后的class文件操作
或许很多Java初学者都会用javac.java命令运行程序,运行过几次后就转向开发工具.我本人也是这样,很久没有用命令行去执行java文件了,现在都是用Eclipse.Intellij Idea等编译工具直接编译运行. 昨天开始学习<算法>,里面很多代码都用到了命令行重定向文件实现输入输出,所以昨天用命令去执行class文件时碰到了一个NoClassDeFoundError异常,网上说的也很杂,看得"一头雾水",其实还是基础不好,搞清楚原理很多问题就迎刃而解了. Idea
-
Python编译成.so文件进行加密后调用的实现
pyc的破解相对容易,使用cython将python文件编译成.so文件,能在一定程度上增强python源码的私密性. 编译成.so文件 环境准备:cython 测试脚本准备:test.py #-*-coding: UTF-8 -* - class test: def say(self): print 'hello' 脚本编译准备: 3.1 编写compile.py文件,内容如下: #-*-coding: UTF-8 -* - from distutils.core import setup f
随机推荐
- windows无法启动MySQL服务报错1067的解决方法
- spring mvc 读取xml文件数据库配置参数的方法
- Python简单实现TCP包发送十六进制数据的方法
- 个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
- 解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
- ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页
- php实现自动获取生成文章主题关键词功能的深入分析
- jQuery插件ajaxFileUpload使用详解
- python3实现抓取网页资源的 N 种方法
- mongodb replica set 配置高性能多服务器详解
- SQL Server比较常见数据类型详解
- Java语言class类用法及泛化(详解)
- jquery子元素过滤选择器使用示例
- js Select下拉列表框进行多选、移除、交换内容的具体实现方法
- 详解JS对象封装的常用方式
- 金山反病毒20050104_日报
- 基于Fedora14下自带jdk1.6版本 安装jdk1.7不识别的解决方法
- PHP无限循环获取MySQL中的数据实例代码
- Android List删除重复数据
- 使用tensorflow实现AlexNet