当前位置:首页 » 编程语言 » class转java

class转java

发布时间: 2022-05-25 04:50:00

❶ 能从class文件生成java吗什么生成

java是运行在java虚拟机上的,你写的.java代码虚拟机是不能直接执行的,虚拟机要先把java文件编译成class字节码文件,虚拟才可以直接执行class文件。

exe是windows的可执行文件的格式,可以把java转换成exe,有个软件教exe4j,是把java转换成exe的,去网络搜索这个软件,有教程自己看吧。

我个人觉得,java生成exe费力不讨好。呵呵。

个人建议,用eclipse生成可执行jar文件,双击jar就可以运行java程序了,除非你用java做个很成功的软件,那样就直接用install什么的哪个软件打成安装包了。小程序的话,可执行jar足够了

❷ 如何将jar包中的.class转换成java文件

没法转。只能用IDE(eclipse或idea等)工具打开,然后全选.class文件的源码,复制到新建的Java文件中

❸ java里的servlet中的class文件怎么转换成java文件或者说怎么编辑class文件

搜一下:java里的servlet中的class文件怎么转换成java文件或者说怎么编辑class文件

❹ 如何将.class转化为.java文件

无论是修改许多网上源码库中的代码,还是调用常见的操作系统例行程序,您免不了要花一些时间去琢磨您没有编写过的代码,而且您还可能没有这些代码的源文件。在开始调试代码时,您需要有一个好的 Java 反编译器,并了解正确使用它的技术。同时,您还要知道如何保护您自己的代码不被窥视。为此,您还需了解有关代码模糊处理的问题。在这篇有关打开和封锁 Java 代码的初学者指南中, Greg Travis 使用 Mocha、HoseMocha、jmangle 和 JODE 等流行工具中的范例,来循序渐进地教你有关反汇编、反编译和 Java 代码模糊处理的基础知识。
没有比发现一个错误,却没有源代码就不能修改更令人沮丧的了。正是这个原因导致了 Java 反编译器的出现,它可以把编译后的字节码完全转回成源代码。尽管代码反编译器不只是针对 Java 语言,但它从来没有象在 Java 开发人员中那样被公开地或广泛地使用。

与反编译针锋相对的是模糊处理。假设反编译人员能很容易从编译后的代码中设法得到源代码,那么要保护您的代码和有价值的技术秘密就不是那么简单了。随着 Java 反编译器的普遍使用, Java 模糊处理器也同样被普及,它的作用就好像放一块烟幕在您的代码前面。反编译和模糊处理在商业开发领域中引起了一场争论 -- 争论中的大部分都集中在了 Java 语言上。

在本文中,我将让您了解代码反编译和模糊处理的具体过程,讨论在这两种技术之后的理论问题,同时简要地谈到它们在商业编程领域中所引起的争论。我还将介绍一些比较有名的反编译器和模糊处理器(有商业的,也有开放源代码的),并随着文章的深入使用它们来创建一些实例。

什么是反编译?

反编译是一个将目标代码转换成源代码的过程。这应该很清楚了,因为编译是一个将源代码转换成目标代码的过程。但什么是目标代码呢?大体上的定义是:目标代码是一种用语言表示的代码,这种语言能通过实机或虚拟机直接执行。对于象 C 这样的语言,目标代码通常运行在硬件 CPU 上,而 Java 目标代码通常运行在虚拟机上。

反编译是困难的

正如以上所描述的,反编译听上去比较简单,但它实际上是非常困难的 -- 从本质上说,它所包含的是根据小规模、低层次的行为来推断大规模、高层次的行为。为了对此有个直观的理解,我们把一个计算机程序看作是一个复杂的公司组织结构。高层管理人员向他们的下属下达类似“最大程度地提高技术生产能力”的命令,下属们再把这些命令转变成更具体的行动,例如安装新的 XML 数据库

作为该公司的新雇员,您可能会问下属他或她在做些什么,并得到回答,“我在安装新的 XML 数据库。”从这句话中,您不可能推断出其最终目的是最大程度地提高技术生产能力。毕竟,最终目标不尽相同,例如可能是分离供应链或累积消费者的数据。

然而,如果属于好奇心特强的那类人,您可能会再多问几个问题,并让公司中不同级别的下属回答您的问题。最后,当把所有的答案汇总后,您可能会猜到企业更大的目标是最大程度地提高技术生产能力。

如果您把计算机程序的工作方式看作类似一个公司的组织结构,那么对于为什么反编译代码不是无关紧要的,以上的这个比方就会给你一个直接的感受。从比较理论化的角度来看,这儿要引用在该领域的杰出研究员 Cristina Cifuentes 对反编译过程的描述:

任何一个二进制改造工程都需要对存储在二进制文件中的代码进行反汇编。从理论上说,分离 von Neumann 上的数据和代码就好象停机问题,因此完全的静态翻译是不可能的。然而,实际上可以使用不同技术来提高可被静态翻译的代码的所占比例,或者采取可在运行中被使用的动态翻译技术。 --"Binary Reengineering of Distributed Object Technology"(请参阅 参考资料)

把目标代码转换成源代码并不是反编译时碰到的唯一问题。一个 Java 类文件潜在包含了一些不同类型的信息。知道类文件中可能包含了哪类信息对于了解您如何利用该信息以及对于信息作何种处理都是很重要的。这其实就是 Java 反汇编器所要做的。

回页首

反汇编一个类文件

Java 类文件的真正二进制格式不是很重要。重要的是知道在那些字节中包含了哪些不同种类的信息。到了这一步,我们将利用多数 JDK 都带有的一个工具 -- javap。 javap 是一个 Java 代码反汇编器,它和反编译器是不同的。反汇编器把机器可读格式的目标代码(如清单 1 所示)转换成人们可读的代码(如清单 2 所示)。

清单 1. 一个类文件的原始内容

0000000 feca beba 0300 2d00 4200 0008 081f 3400
0000020 0008 073f 2c00 0007 0735 3600 0007 0737
0000040 3800 0007 0a39 0400 1500 000a 0007 0a15
0000060 0800 1600 000a 0008 0a17 0800 1800 0009
...

清单 2. javap 的输出结果

Local variables for method void priv(int)
Foo this pc=0, length=35, slot=0
int argument pc=0, length=35, slot=1

Method void main(java.lang.String[])
0 new #4
3 invokespecial #10
6 return

请注意,清单 2 所示的并不是源代码。该清单的第一部分列出了方法的局部变量;第二部分是汇编代码,它也是人们可读的目标代码。

一个类文件中的元素

javap 被用来反汇编或解包一个类文件。这里简要列出了可以通过使用 javap 进行反汇编的 Java 类文件所包含的信息:

成员变量。每个类文件中包含了对应于该类每个数据成员的所有名称信息和类型信息。

经过反汇编后的方法。类的每一个方法都是由一串虚拟机指令来表示的,并附带它的类型签名。

行号。每个方法中的每个节被映射到源代码行,在可能的情况下,源代码行来生成节。这使得实时系统和调试器能够为在运行状态的程序提供堆栈跟踪。

局部变量名一旦方法被编译了,这个方法的局部变量就不太需要名称了,但是能通过对 javac 编译器使用 -g 选项来包含它们。这也使得实时系统和调试器能帮助您。

既然对 Java 类文件的内部情况已有所了解,让我们看一下如何能转换这些信息来达到我们的目的。

回页首

使用反编译器

从概念上讲,反编译器使用起来非常简单。他就是把编译器逆过来用:你给它 .class 文件,它还给你一个源代码文件。

一些比较新的反编译器有精致的图形界面。但在一开始所举的例子中,我们将使用的是 Mocha,它是第一个公开的可利用的反编译器。在本文的最后,我会讨论一下在 GPL 下一个较新的反编译器。(请参阅 参考资料,下载 Mocha 并获取 Java 反编译器的清单。)

让我们假设在目录中有一个名为 Foo.class 的类文件。用 Mocha 对它进行反编译非常简单,只要键入以下命令:

$ java mocha.Decompiler Foo.class

❺ 如何将class文件转换成java源文件

需要把.class反编译.java才可以
找到eclipse下的插件,叫jadclipse,安装好之后,只要双击.class文件,就能直接看源文件,包括jar包中的class文件,也可以直接反编译。
1.下载jad1.5.8e
下载后解压。解压缩后将jad.exe拷贝到JRE的bin目录下,如d:/Java/jre1.5/bin
2.下载net.sf.jadclipse_3.2.4.jar
3.安装插件,有如下两种方法
A.将net.sf.jadclipse_3.2.4.jar复制到D:/leaf/eclipse/plugins目录下。
B.在d:/leaf下建立ecliplsePlungin/jadclipse/eclipse/plugins目录,将net.sf.jadclipse_3.2.4.jar放到该目录。在d:/leaf/eclipse/links下建jadclipse.link,内容为path=d/://leaf//ecliplsePlungin//jadclipse
3.启动Eclipse后,在Windows(窗口)-->Perference(首选项)-->Java下面应该会多出一个JadClipse目录,相关的设置可以在此修改配置jadclipse:设置path to decompiler为jad.exe的全路径,如:d:/Java/jre1.5/bin/jad.exe,在Directory for temporary files中指定临时文件的路径,如:C:/Java/temp
4、在Eclipse的Windows-->Perference-->General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”
5、安装完成,双击class文件,Eclipse将自动反编译了。
6、把*.java 和*.class文件放在同一文件夹下,在反编译时它回自动去寻找*.java的文件。
反编译工具jad简单用法
以下假设jad.exe在c:/java目录下
一、基本用法
Usage: jad [option(s)]
直接输入类文件名,且支持通配符,如下所示。
c:/java/>jad example1.class
c:/java/>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。
二、Option -o
不提示,覆盖源文件
三、Option -s
c:/java/>jad -sjava example1.class
反编译结果以.java为扩展名。
四、Option -p
将反编译结果输出到屏幕
c:/java/>jad -p example1.class
将反编译结果重定向到文件
c:/java/>jad -p example1.class>example1.java
五、Option -d
指定反编译的输出文件目录
c:/java/>jad -o -dtest -sjava *.class

❻ eclipse怎么把class文件转换为java文件

需要把.class反编译.java才可以
找到eclipse下的插件,叫jadclipse,安装好之后,只要双击.class文件,就能直接看源文件,包括jar

包中的class文件,也可以直接反编译。

1.下载jad1.5.8e

下载后解压。解压缩后将jad.exe拷贝到JRE的bin目录下,如d:/Java/jre1.5/bin

2.下载net.sf.jadclipse_3.2.4.jar

3.安装插件,有如下两种方法

A.将net.sf.jadclipse_3.2.4.jar复制到D:/leaf/eclipse/plugins目录下。

B.在d:/leaf下建立ecliplsePlungin/jadclipse/eclipse/plugins目录,将net.sf.jadclipse_3.2.4.jar放到该目录。在d:/leaf/eclipse/links下建jadclipse.link,内容为path=d/://leaf//ecliplsePlungin//jadclipse

3.启动Eclipse后,在Windows(窗口)-->Perference(首选项)-->Java下面应该会多出一个JadClipse目录,相关的设置可以在此修改配置jadclipse:设置path to decompiler为jad.exe的全路径,如:d:/Java/jre1.5/bin/jad.exe,在Directory for temporary files中指定临时文件的路径,如:C:/Java/temp

4、在Eclipse的Windows-->Perference-->General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”

5、安装完成,双击class文件,Eclipse将自动反编译了。

6、把*.java 和*.class文件放在同一文件夹下,在反编译时它回自动去寻找*.java的文件。

反编译工具jad简单用法

以下假设jad.exe在c:/java目录下

一、基本用法

Usage: jad [option(s)]

直接输入类文件名,且支持通配符,如下所示。

c:/java/>jad example1.class

c:/java/>jad *.class

结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源

文件。

二、Option -o

不提示,覆盖源文件

三、Option -s

c:/java/>jad -sjava example1.class

反编译结果以.java为扩展名。

四、Option -p

将反编译结果输出到屏幕

c:/java/>jad -p example1.class

将反编译结果重定向到文件

c:/java/>jad -p example1.class>example1.java

五、Option -d

指定反编译的输出文件目录

c:/java/>jad -o -dtest -sjava *.class

❼ java中怎么把.class文件编译成java文件

第一步,查看并配置环境变量(这里不做解释), 且把名字修改为HI。

第三步,打开 HI文本文档并且输入程序(程序一定要对,不能有任何错误)

第四步,将此文本文档后缀名修改为“.java”并保存 ,如果出现提示对话框(如果改变文件扩展名,可能会导致文件不可用)点确定。

第五步,打开cmd并且以管理员身份运行,进入到java文件夹中

第六步,在刚才的路径后输入“javac HI.java”(javac后面加空格),敲回车,这时如图所示,java文件上方会多出一个class文件(如果没有class文件说明编译不成功)。

第七步,继续在刚才的路径输入“java HI”(java后面加空格), ,语句下方会出现“HI!”,这说明已经运行成功(也可以尝试其他程序段)。

❽ Java中eclipse别人发的文件后缀名是class怎么转变成java

需要用java反编译器

❾ 如何将编译过的.class文件转变为未编译的.java文件

可以使用反编译工具进行反汇编即可,可以获得.class文件的.java文件.反编译工具有如下:

DJ Java Decompiler V3.9.9.91
DJ Java Decompiler 是个反编译的工具,可以将编译过的CLASS文件编译还原成为Java原始文件,并且不需要额外安装JVM(Java Virtual Machine)或是Java SDK的工具模组即可使用。不单如此,DJJava Decompiler也兼具有Java程序编辑工具的角色,提供一些辅助功能便于程序撰写与修改。
下载地址:http://www.skycn.com/soft/4645.html

小颖JAVA源代码反编译超级引挚 V1.4 标准版
最新的Java反编译工具,支持目录级的反编译,也支持双击.class文件就可查看源文件,只限用于学习交流使用。
下载地址:http://www.skycn.com/soft/8252.html

Jad-the fast Java Decompiler V0.07
一个 Java 反编译器,在 IE 中读取 Java 类文件,并将他们转换成 Java 原文件,这些原文件可以被重新编译。
下载地址:http://www.skycn.com/soft/945.html

JDecompiler V1.0 汉化版
现在有许多反编译Java class文件的软件,但是大多数都采用内置的查看器来查看反编译后的源代码,无法显示代码的关键字。这个反编译Java class文件的小工具,能使用自己喜欢的文本编辑器查看反编译后的代码,并可以高亮显示关键字内容。
安装后在资源管理器中直接双击.class文件就可以反编译程序
下载地址:http://www.skycn.com/soft/25489.html

我现在就是使用最后一种工具的,结合UltraEdit-32使用,效果不错的.JDecompiler V1.0 汉化版安装以后,第一次使用,直接双击要编译的.class文件,提示选择文本编辑器,可以选择UltraEdit-32,以后双击要反编译的.class文件即可查看.java源代码了,非常方便.

UltraEdit-32
UltraEdit 是一个记事本和大多数编辑程序的替换程序,支持无限制的文件大小,100,000 个词语的拼写检查,完整的十六进制编辑性能,可配置的适合程序设计的语法加亮、列编辑。UltraEdit 还有许多你所需的功能。UltraEdit 可以同时处理多个文件,即使它们是以 MB 为计数的文件。它基于磁盘,甚至对于非常大的文件,也只需要很少的内存数量。UltraEdit-32 是为 Windows 98/Me 和 Windows NT/2000/XP/2003 设计。
下载地址:http://soft.hua3.net/SoftView/SoftView_1312.html

❿ 怎么将.class变成.java

java反编译。。。.class用jar包打过就成了可执行文件了。java属于源码。。。反编出来的有出入。否则java写的软件都成了开源的了。

热点内容
没有卡没有密码怎么办啊 发布:2025-02-13 01:51:53 浏览:460
linux2个ftp服务器 发布:2025-02-13 01:44:31 浏览:14
戴尔r730网络配置后如何保存 发布:2025-02-13 01:38:27 浏览:344
php用什么编译 发布:2025-02-13 01:37:12 浏览:703
手机缓存的文件路径是在哪 发布:2025-02-13 01:34:58 浏览:563
oppo手机密码哪里设置 发布:2025-02-13 01:30:38 浏览:683
android网易 发布:2025-02-13 01:30:37 浏览:488
不联网怎么看自己的配置 发布:2025-02-13 01:00:38 浏览:858
饥荒联机版独立服务器有什么用 发布:2025-02-13 01:00:38 浏览:637
高级语言都有与之对应的编译程序或解释程序 发布:2025-02-13 00:54:46 浏览:571