首页 新闻 会员 周边

如何实现将Java文件动态编译并加载到jar包文件中

0
悬赏园豆:10 [已解决问题] 解决于 2021-12-22 10:10

假设现在有个应用,我写了一个service层代码,把这个service层文件通过接口上传给应用,应用会自动编译把它加载到内存中。请问这中需求怎么实现。这个应用是以jar包形式运行的。或者可以理解成,如何编译并加载多依赖的java文件

小毅同学的主页 小毅同学 | 初学一级 | 园豆:177
提问于:2021-12-21 17:58
< >
分享
最佳答案
1

你这有点的复杂,如果使用命令行,可以参考如下的命令,放好文件使用javac编译成class
JAVAC="C:\Program Files\Java\jdk1.8.0_281\bin\javac.exe"
"${JAVAC}" -encoding utf-8 -cp ${CP} ${j} -sourcepath ./$1 -d ${BaseDir}/cls

如果是编程实现,这有点麻烦,使用单独的ClassLoader和反射这些才能实现

主要看使用场景是啥,一般没有这么复杂的场景

收获园豆:6
2012 | 高人七级 |园豆:21230 | 2021-12-21 18:34

我要用代码实现,确实用的反射和classloader,现在遇到的问题主要是编译器跑没问题,但是打成jar包再跑会出现类似与找不到代码文件中引用的其他依赖

小毅同学 | 园豆:177 (初学一级) | 2021-12-21 18:37

@小毅同学: 如果编译器已经可用,说明流程没问题了。 那一般可能是classpath需要不对

2012 | 园豆:21230 (高人七级) | 2021-12-21 18:43

@2012: classpath是要在哪里配的呀大佬。

小毅同学 | 园豆:177 (初学一级) | 2021-12-21 18:46

@小毅同学: classpath的根路径是默认是从src开始

一乐乐 | 园豆:217 (菜鸟二级) | 2021-12-21 20:11

我圈圆圈的那个就是项目输出的classpath

一乐乐 | 园豆:217 (菜鸟二级) | 2021-12-21 21:53
其他回答(2)
1

eclipse的话,classpath先右键项目,然后选择 Build Path(idea的话差不多,百度一下就知道了)

收获园豆:2
一乐乐 | 园豆:217 (菜鸟二级) | 2021-12-21 21:52
1

可以考虑用jndi实现

收获园豆:2
8号位 | 园豆:596 (小虾三级) | 2021-12-22 09:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册