假设现在有个应用,我写了一个service层代码,把这个service层文件通过接口上传给应用,应用会自动编译把它加载到内存中。请问这中需求怎么实现。这个应用是以jar包形式运行的。或者可以理解成,如何编译并加载多依赖的java文件
你这有点的复杂,如果使用命令行,可以参考如下的命令,放好文件使用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和反射这些才能实现
主要看使用场景是啥,一般没有这么复杂的场景
我要用代码实现,确实用的反射和classloader,现在遇到的问题主要是编译器跑没问题,但是打成jar包再跑会出现类似与找不到代码文件中引用的其他依赖
@小毅同学: 如果编译器已经可用,说明流程没问题了。 那一般可能是classpath需要不对
@2012: classpath是要在哪里配的呀大佬。
@小毅同学: classpath的根路径是默认是从src开始
我圈圆圈的那个就是项目输出的classpath
eclipse的话,classpath先右键项目,然后选择 Build Path(idea的话差不多,百度一下就知道了)
可以考虑用jndi实现