public
class
LoadJar {
public
static
void
main(String[] args) {
String
classPath
=
"loader.HelloImpl"
;
String jarPath =
"file:///D:/tmp/test.jar"
;
loadJar1(
classPath
, jarPath);
loadClass(
classPath
);
loadJar2(
classPath
, jarPath);
loadClass(
classPath
);
public
static
void
loadJar1(String
classPath
, String jarPath) {
ClassLoader cl;
try
{
cl =
new
URLClassLoader(
new
URL[] {
new
URL(jarPath) });
Class
<?> c = cl.loadClass(
classPath
);
HelloIface impl = (HelloIface) c.newInstance();
System.out.
println
(impl.hello());
System.out.
println
(impl.sayHi(
"zhangsan"
));
try
{
HelloIface impl2 = (HelloIface)
Class
.forName(
classPath
)
.newInstance();
System.out.
println
(impl2.hello());
}
catch
(ClassNotFoundException e) {
System.out.
println
(
"非系统加载器加载的JAR,不能通过Class.forName使用"
);
}
catch
(Exception e) {
e.printStackTrace();
public
static
void
loadJar2(String
classPath
, String jarPath) {
URLClassLoader urlLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class
<URLClassLoader> sysClass = URLClassLoader.
class
;
try
{
Method method = sysClass.getDeclaredMethod(
"addURL"
,
new
Class
[] { URL.
class
});
method.setAccessible(
true
);
method.invoke(urlLoader,
new
URL(jarPath));
Class
<?> objClass = urlLoader.loadClass(
classPath
);
Object instance = objClass.newInstance();
Method method2 = objClass.getDeclaredMethod(
"sayHi"
,
new
Class
[]{ String.
class
});
System.out.
println
(method2.invoke(instance,
"zhangsan"
));
HelloIface impl2 = (HelloIface)
Class
.forName(
classPath
).newInstance();
System.out.
println
(impl2.hello());
}
catch
(Exception e) {
e.printStackTrace();
public
static
void
loadClass(String
classPath
){
try
{
HelloIface impl2 = (HelloIface)
Class
.forName(
classPath
)
.newInstance();
System.out.
println
(impl2.hello());
}
catch
(Exception e) {
System.out.
println
(
"非系统加载器加载的JAR,不能通过Class.forName使用"
);
【笔记17】使用 jad 工具把 java 的 class 文件转换为 java 文件;使用 luyten 把 java 的 jar 包转换为 java文件
📃 我的代码被存放在公司的电脑上
📃 疫情原因使得我只能在家办公
📃 而公司已经被隔离了😂 (怕公司的电脑感染新冠病毒)
📃 我无法在公司代码的基础上继续编写代码
📃 我有两种选择:① 重新编写代码;② 跑路
📃 但是我选择了第三个选项:把 Java 项目打包后的 jar 文件转换为打包之前的 java 文件
📃 在这里我推荐两款工具,这两款工具都可以把 class 文件转换为 java 文件
🌼 ① jad 工具:可把 class 文件转换为 java 文件 【本文章的前四节是介绍 jad 工具的使用】
🌼 ② Luyten 工具:可把 jar 包转换为 java 文件
二.添加 jar 包到 maven 库 ????
第三方自定义 jar 包可以添加到本地 maven 库中,随后即可 mvn package 打入到最终的项目 jar 包中,该方法最方便。创建 install.sh 文件,jar_path 为第三方自定义 jar 包在设备的位置,groupId、artifactId 和 版本号 version 自己定义,执行脚本后
2021年 最新 多阶段构建dockerfile实现java源码编译打jar包并做成镜像
多阶段构建指在Dockerfile中使用多个FROM语句,每个FROM指令都可以使用不同的基础镜像,并且是一个独立的子构建阶段。使用多阶段构建打包Java应用具有构建安全、构建速度快、镜像文件体积小等优点.
[-] .\Navicat-Cracker NavicatCrackerDlg.cpp:332 -3All patch solutions are suppressed. Patch abort!HI