导航:首页 > 源码编译 > java动态编译jar包内的文件

java动态编译jar包内的文件

发布时间:2024-03-31 01:38:50

A. java里面的jar包是否就相当于c#编译生成的dll文件

dll文件,俗称动态链接库文件,是有执行程序可调用的二进制文件,也就是计算机能识别的二进制代码,任何语言都可以调用。只是方法不同而已。

jar文件,一般是由java虚拟机解析的,其实相当于将一系列的字节码文件(.java文件)或者包,java虚拟机这些文件通过一些算法序列化(压缩),就形成了jar文件。但程序需要执行时java虚拟机将字节码文件再次编译成二进制文件供计算机执行。

PS:这就是java是跨平台的原因。所有程序的字节码文件相同。不同操作系统上只需安装不同的java虚拟机就可以执行相同的程序。

B. 如何快速反编译JAVA的jar包或war包

有些时候我们面对一个class文件jar包或者war包,很想知道里面有什么参数,有什么方法,但是又没有文档,又没有源代码,那怎么办呢。

没关系,我们可以反编译这些class文件或jar包或war包。

java的class文件存储的是字节码,这些基本知识在此就不必啰嗦了。反正就是其存储的信息足够可以反编译出来。

我们下载TTools中dist文件夹下的TdeCompile.jar可执行jar包,然后就可以开始反编译工作了。使用方法很简单,在命令行输入命令即可,如下

[plain] view plain
java -jar TdeCompile.jar xxx.class

注意如果你不在TdeCompile的同目录下,需要写上TdeCompile.jar的路径,其次跟一个参数xxx.class,xxx代表你所要反编译的文件的文件名。输出即是xxx.class.txt,它是反编译过后的文件,txt文本格式,所在目录通xxx.class。请确保你在xxx.class目录下有写权限。
我们也可以直接操作一个jar包或war包。如:
[plain] view plain
java -jar TdeCompile.jar xxx.jar
程序可以自动识别是class文件还是jar或war包,如果是jar包或war包,则首先自动解压缩,解压缩的目录为xxx.jar的同一个目录,然后逐个反编译class文件,在每个class文件的旁边输出一个xxx.class.txt文件。请确保你在jar包所在目录有写权限。

TdeCompile的原理是利用了ASM去读取每一个class文件的信息。

C. 如何用JAVAC一次性编译多个包下的JAVA文件

1.利用-cp
cd xxx
dir *.java/s/b > srclist.txt
or dir x:/yyy/zzz/*.java/s/b > srclist.txt
javac -cp .;xxx/yyy/zzz.jar;x/y/z.jar -d classes @srclist.txt

2.直接使用

这个,主要是在做一个独立的Java项目,它不依赖IDE,同时要在别人电脑上编译运行
下面编译运行用到了jar包、properties文件。首先进入项目的根目录下,注意:每一行,表示:DOS系统将执行的指令。
G:
cd testJava
上面,两个命令为模拟,进入项目根目录(具体目录,根据自己程序所在目录)。
javac -classpath .;../previousRecord.properties;../lib/jtds-1.2.5.jar;com/cjb/properities/jdbc.properties com/cjb/jdbc/*.java com/cjb/client/*.java -encoding UTF-8
上面命令,表示:编译com/cjb/jdbc下所有java类和com/cjb/client下所有java类,这些类用到了previousRecord.properties文件(它的路径是相对的)和jtds-1.2.5.jar的文件jar包(它的路径也是相对的),同时用的编码是UTF-8。
java -Xms64m -Xmx512m -cp .;../previousRecord.properties;../lib/jtds-1.2.5.jar;com/cjb/properities/jdbc.properties com/cjb/client/MailDispatcherOperation
上面命令,表示:执行com/cjb/client下的MailDispatcherOperation.class(它里面有Main函数)。

D. 修改jar包中的配置文件

原文地址: 修改jar包中的配置文件

现有jar包 base-web.jar

查找jar包里面的文件:

jar ftv ks-web-1.0.3.jar | grep pom.xml

要修改jar包中配置文件可以用下面三种方式:

方式一 通过vim命令直接修改保存jar。超方便。

通过vim命令直接编辑jar

vim xxx.jar 该命令首先会列出全部文件,可以通过输入/abc来搜索,定位到对应的abc文件后回车进入配置文件内进行编辑,:wq保存。

方式二 通过jar命令替换jar包中的文件(也可新增)

1.列出jar包中的文件清单

jar  tf  base-web.jar

2.提取出内部jar包的指定文件

jar  xf  base-web.jar  `jar  ft  base-web.jar | grep  t_ivr_data_bj.json`

3.然后可以修改文件

vim BOOT-INF/classes/realtime/t_ivr_data_bj.json

4.更新配置文件到内部jar包.(存在覆盖,不存在就新增)

jar uf  base-web.jar  BOOT-INF/classes/realtime/t_ivr_data_bj.json      

4.1更新内部jar包到jar文件

jar  uf  base-web.jar  内部jar包.jar     

5.可以查看验证是否已经更改

vim base-web.jar

方式三 解压jar包,修改后重新打包jar

1.解压

unzip base-web.jar

2.移除jar包,最好备份

rm base-web.jar

3.重新打包

jar -cfM0 base-web.jar *

或者

jar -cvfm0 base-web.jar ./META-INF/MANIFEST.MF ./

4.运行

java -jar base-web.jar

jar命令参数:

-c 创建新的存档

-f 指定存档文件名

-M 不配置配置清单,这样还可以使用maven生成的配置清单也就是MANIFEST.MF

-0 不进行压缩,如果压缩会有问题

-m 指定清单文件

-t 列出归档目录

-x 从档案中提取指定的 (或所有) 文件 

-u 更新现有的归档文件 

-v 在标准输出中生成详细输出 

E. 在java代码中实现动态编译java文件

importjavax.tools.*;
importjava.io.*;
/**
*@authorhardneedl
*/
finalpublicclassMyCompile{

/**
*@paramargs命令行参数只有1个,即待编译的源代码文件的绝对路径
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String...args)throwsFileNotFoundException{

JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
intr=compiler.run(null,null,null,args[0]);
System.out.println(r==0?"成功":"失败");
}

}

F. jar是什么意思,jar文件怎么打开

JAR文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名。打开方式如下:

1、桌面有一个jar的文件。

JAR 文件格式以 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

(6)java动态编译jar包内的文件扩展阅读

JAR文件的特点

1、安全性

可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。

2、减少下载时间

如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

3、压缩

JAR 格式允许您压缩文件以提高存储效率。

4、传输平台扩展

Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。

G. java中,jar包里面的类是源代码吗还是编译后的文件字节码文件

起作用的是
字节码
文件,当然源代码也可以打包进去,但不起作用。

H. java动态编译jar找不到

~/usr/share/java/mysql-connector-java.jar

找不到MYSQL的戏,就是说明上面的路径不对。。。。。。。。。

I. 如何修改jar包内的源文件

1、将class文件改成java文件(如果你的jar包中是包含源代码的,即包含java文件,请跳过此步)
先将jar包通过winrar或者快压等解压缩软件将jar包解压缩,再通过一些专门的Java反编译工具将class文件转换为java文件(本博主是使用的是JD-GUI这个软件)。
2、更改java源文件
将java文件放入自己专门的开发工具中(eclipse、myeclipse等),需要注意的是,应该是将需要改动的java文件放入java project中,并且要创建对应的package,再将原本的jar导入,此时可能还报错,需要导入一些相应的jar包。当项目不报错之后,就可以做你所需要的修改了。
3、导出jar包
将现在的java project导出为jar包,然后将原本jar包中相应的class文件替换掉(如果是jar包中含有java源文件,也需要将java文件也需要替换)。
至此,jar包修改成功。大家如果有什么问题,可以直接问我或者在下方留言,本人qq:924325679。

J. 各位java高手,关于.jar包中的.class文件修改的问题

不要修改了,给它派生出一个子类或编辑同一个类后把源类替换掉得了。

上述方法是通过调用这个类包派生出一系列类重新生成一个JAR文件与其共用,使它达到你想要的效果,不过现在想想这个办法工作量也不小,考虑下一个试试。

你可以把他们解压出来,然后反编译你需要改动的那个类,改动期间再进行反编译需要牵涉到的类,这样就不需要全部反编辑了。

现在我还没有别的捷径,也很想知道。

六月十五日
想把它压缩成jar文件,暂且把java独立应用程序分成两种:
1)没有用到Package的普通程序;
2)有Package的,一般有多个.class文件才用的。

1)比如你写的java文件的目录是:D:\JAVA\test.java;那么你运行完会在同一目录下生成一个test.class文件,这时新建一个MANIFEST.txt文档(名字看清楚了)。
打开写入以下内容:
Manifest-Version: 1.0
Created-By: 1.5.0_08 (Sun Microsystems Inc.)
Main-Class: test
保存为MANIFEST.MF。从命令行进入到JAVA目录下,
敲入: jar cvfm test.jar manifest.mf test
这样就生成了test.jar文件,直接点击就可以运行。

2)还是这个目录:D:\JAVA\test1.java和test2.java;且两个程序都中有package com.chat,就是把生成的.class放在里面,这时的MANIFEST.MF(可以用写字板打开)
内容是:
Manifest-Version: 1.0
Created-By: 1.5.0_08 (Sun Microsystems Inc.)
Main-Class: com.chat.test1
注:test1里必须有main函数。
从命令行进入到JAVA目录下,
敲入:jar cvfm t1.jar manifest.mf com/*;test2
同理。在DOS 下
jar fc a.jar a
a 是你要打包文件夹
a.jar 是打包后的文件名 随便命名。

阅读全文

与java动态编译jar包内的文件相关的资料

热点内容
苹果安卓打车价格不一样如何解决 浏览:318
鸿蒙系统怎么换为安卓系统 浏览:850
pdf已加密如何转为ppt 浏览:6
文件或文件夹怎样命名 浏览:928
悦跑圈算法 浏览:707
骑砍2霸主作战命令 浏览:982
嵌入式常用算法 浏览:550
csgo不输入命令如何切换服务器 浏览:5
安卓手机怎么开启分身微信 浏览:308
苏格拉底的申辩pdf 浏览:82
php手册怎么下载 浏览:760
哪个app可以看全运会男篮直播 浏览:970
excel中图片怎么压缩 浏览:194
电脑上java编译器 浏览:562
中联压缩式垃圾车报价 浏览:780
我的世界hmcl启动器如何开服务器 浏览:129
安卓7如何开启导航键 浏览:397
无法连接科雷服务器怎么解决饥荒 浏览:192
服务器灭火用什么灭火器 浏览:863
压缩机喷出来的油 浏览:89