导航:首页 > 编程语言 > 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相关的资料

热点内容
宝马e底盘如何降级编程 浏览:729
浩辰cad删除文件夹 浏览:82
怎样把pdf文件压缩10m内 浏览:63
js如何终止数据请求 浏览:32
win10共享文件夹独立密码 浏览:44
到仙桃数据谷怎么坐车 浏览:61
安卓奥迪A6l 浏览:475
编程里简述什么是副本机制 浏览:217
win10游戏模式不能打开 浏览:813
小米2s升级miui7卡在开机界面 浏览:113
网站建立起来后怎么运营 浏览:911
头条视频缓存文件在哪里 浏览:467
黑苹果加载原生电源 浏览:514
小米4升级系统电脑版 浏览:504
微信哪里重新加载数据 浏览:344
adbexe工具包下载 浏览:460
有创意的文件夹名称 浏览:989
pandas处理大的excel文件 浏览:136
jsurl中文解码 浏览:540
java动态移除jar 浏览:960

友情链接