zgzhang

Results 9 comments of zgzhang
trafficstars

今天也踩到了这个坑,有什么好的解决办法吗

@Evilsylvana 我就是这么干的,可以解决编译问题,但是还有一个坑 Iterable options = Arrays.asList("-classpath", buildClassPath("./BOOT-INF/lib/*")); JavaCompiler.CompilationTask task = compiler.getTask(null, manager, diagnosticCollector, options, null, Arrays.asList(javaFileObject)); 当classLoader findClass时会报NoClassDefFoundError错误,因为编译时添加的classPath自定义的loader找不到,之后解决后再更新解决方法

@Evilsylvana 我的classLoader是自定义的,为了重写findClass实现从远端加载byteCode

@Evilsylvana 问题已经解决 从一个springBoot已经加载的bean获取它的classLoader launchedURLClassLoader = SpringUtil.getBean("mileageService").getClass().getClassLoader(); EngineClassLoader engineClassLoader = new EngineClassLoader(launchedURLClassLoader); 自定义的classLoader的父亲指定为springBoot 的classLoader 这样就可以加载到对应的class! private class EngineClassLoader extends ClassLoader { public EngineClassLoader(ClassLoader parent) { super(parent); } }

已经很清晰了。。,还需要什么呢?

> > 在应用启动的时候,先解压下这个spring boot的jar,然后再将依赖加入到classpath里面 > > 解压jar,再执行? 解压只是为了把spring-boot打包的fat-jar下lib下的jar包加入classpath,不然没办法自定义编译

@loyrevel @wugui1994 sorry当年也没有从作者处获得帮助,我自己也几乎不做大数据相关了,但是类似的项目应该很多

找到一个维护度挺高的项目,细节请两位自己关注下,https://github.com/spark-jobserver/spark-jobserver/blob/master/doc/chinese/job-server.md