利用jdk1.6特性编译的java字符串得到的类,其中这个类还引入了项目中其它类对象。springboot 按照jar包启动方式,会报错找不到包和对象。直接用springboot run启动运行,根据字符串编译对象没问题,但是用jar启动就是报错,想了很多方法就是不行,可有其它方式,写了好久的牛逼功能结果卡在这儿了。。求助
<p>你把jar解压看看,应该是没有那些包和类的,这个问题我遇到过</p>
本身其实就没有包,是使用JavaCompiler编译器在内存中把sting字符串编译然后通过类加载器去加载的对象
你看target里面有没有你需要的那个包啊 如果没有 看看maven打包时候 是不是有啥问题
jar包解压后里面lib目录下依赖对象都有,编译报错找不到包的的对象是存在的,只是使用JavaCompiler编译器编译的对象找不到那些依赖对象
<p>请问你这个问题解决了吗,同遇</p>
回复 <a class="referer" target="_blank">@林荫小憩</a> : 数据库的数据也可以直接通过maven插件读取的,代码自动生成就是读取数据库字段去生成文件的
回复 <a class="referer" target="_blank">@青宇0223</a> : 直接将字符串通过maven插件生成好文件?我这字符串是存数据库中,动态获取的。
没解决,放弃了,改成maven插件了,直接在编译之前,通过maven插件,生成好文件,然后编译到jar包里面
<p>吧需要引入的jar包 放到一个lib目录下,然后编译的时候加上这些jar包的路径即可.我现在想让他直接读取springboot的boot info下的lib 还不知道怎么实现</p>
JavaFileObject javaFileObject = manager.makeStringSource(className, javaStr); Iterable<String> options = null; if(isJar()) { options = Arrays.asList( "-classpath", getJarFiles(getPath()) ); } JavaCompiler.CompilationTask task = compiler.getTask(null, manager, null, options, null, Arrays.asList(javaFileObject));
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。