導航:首頁 > 編程語言 > 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相關的資料

熱點內容
iphone6ifile 瀏覽:190
linux查找大小超過5k文件 瀏覽:583
計量機構內審記錄包括哪些文件 瀏覽:959
目前網購app都有哪些 瀏覽:242
百度地圖json數據格式 瀏覽:101
編程和移動端哪個好學 瀏覽:563
struts2xml文件 瀏覽:457
下面哪個不是excel2010的數據類型 瀏覽:765
如果禁用分頁文件或者 瀏覽:191
雅奇可視化編程怎麼樣 瀏覽:831
包含文件名的文本框 瀏覽:799
spring工具類注入dao 瀏覽:788
香港買蘋果7哪裡便宜 瀏覽:121
win10gt540 瀏覽:813
什麼叫編程簡單點 瀏覽:10
怎麼上傳word文件到qq 瀏覽:590
netexcel導入代碼 瀏覽:231
pps緩存文件怎麼刪除 瀏覽:10
家裡網路在用怎麼檢測 瀏覽:419
克拉漫播下載的文件名 瀏覽:417

友情鏈接