导航:首页 > 编程语言 > java动态移除jar

java动态移除jar

发布时间:2024-10-19 07:33:16

㈠ 服务器上替换了个jar包,修改了两个java文件编译后的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文件一移动就错了

你直接复制jar文件到项目中的lib文件夹中就可以了,这样不需要你去引用而是移到项目中了

㈢ java窗体程序 打包jar后 怎么动态修改xml配置信息,请问哪位大神会啊

这种做法很不好呀,应该在窗体程序中增加一个配置文件,原包中的xml文件做为原始配置不动,窗体程序运行时可做一个菜单项“配置”,新做的配置修改保存到本地一个xml文件中,以后启动窗体程序时先检查有没有这个本地xml文件,有则从它里面读入配置,否则从类路径的jar中读取配置

㈣ 关于java动态加载jar的问题

设我们有一个hello.jar文件,里面有一个Util类,我们希望在运行期调将这个jar包放入到我们运行环境并且调用里面的Util.getVersion方法。怎么实现?
在java中,我们的类都是通过ClassLoader来加载的,同时ClassLoader具有层级关系,当某个类找不到时,它会去他的父类加载器去寻找,如果依然找不到,就抛出ClassNotFoundException了。
为了动态加载hello.jar里面的Util类,我们需要将这个jar包放入到我们的类加载器中去,然后再获取里面的类。如下面的代码

// 位于hello.jar
package com.flyingzl;

public class Util {

public static void getVersion(){

System.out.println("java version: " + System.getProperty("java.version"));
}

}

import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {
public static void main(String[] args) {

URL[] urls = new URL[] {};
MyClassLoader classLoader = new MyClassLoader(urls, null);

try {
classLoader.addJar(new File("c:/hello.jar").toURI().toURL());
Class<?> clazz = classLoader.loadClass("com.flyingzl.Util");
Method method = clazz.getDeclaredMethod("getVersion");
method.invoke(null);
classLoader.close();
} catch (Exception e) {
e.printStackTrace();
}

}

static class MyClassLoader extends URLClassLoader {

public MyClassLoader(URL[] urls) {
super(urls);
}

public MyClassLoader(URL[] urls, ClassLoader parent) {
super(urls, parent);
}

public void addJar(URL url) {
this.addURL(url);
}

}

}

注意:这里仅仅是为了展示如何动态加载jar包,代码写得很粗,生产代码需要有更完善的异常处理。我们只关心如何动态加载jar包即可。
动态加载jar包,需要用到java.net.URLClassLoader这个类,它可以指定一个路径将jar包或者classes文件加载到类空间。加载完毕后,直接调用loadClass就可以加载指定的类,然后通过反射生成实例或者调用方法即可。
其实,Tomcat等服务器也利用了此思路,比如每一个web应用启动时,它都会自动加载其下的lib文件夹下的jar包。
运行程序,我们就可以看到程序正常输出:
java version: 1.7.0_03

㈤ 在myeclipse中开发的java项目遇到jar包冗余情况,如何删除项目中的冗余jar包啊项目很大jar包一百多个。

如果项目允许,你为什么不在一开始的时候建立自己的Libary?或是将你用的jar包放入自制的libary.这样方便整理和查看!而且如果你的项目jar有冗余,证明项目开始的设计就有问题!抱歉你的问题无法解决,只是提点个人建议!
----------
OK,把你的包加入自己的libary,其他的删掉?毕竟不用的包较多吧

阅读全文

与java动态移除jar相关的资料

热点内容
ps文件存在png格式错误 浏览:183
有什么儿童语文阅读的app是免费的 浏览:975
win10地址栏黑色 浏览:601
足球赛直播用什么app 浏览:480
什么网站可以下载工科书 浏览:382
如何知道网站用户群体是谁 浏览:276
linux内核移植实验 浏览:230
小米恢复文件在哪里找 浏览:216
查看linux上数据库监听 浏览:76
win10怎么只重置c盘 浏览:57
3dsmaxcat应用全方位教程下载 浏览:841
教学编程的软件有哪些 浏览:998
充10话费用微信钱包 浏览:974
上海文件查重查哪些内容 浏览:635
javaendswith正则 浏览:381
微信更换收藏文件 浏览:952
如何提取分散数据 浏览:557
什么是数值数据 浏览:961
韦哲国际创意中心的app是什么 浏览:865
proe50有哪几个版本 浏览:776

友情链接