Idea 结合 maven provided 依赖时不加进 classpath
最近开始接触了小程序和 jFinal,顺带多了解下 ES 的一些新特性和 jFinal 快速开发...
没想到又是遇到一个令人无奈的情况,记一下吧,虽然没技术含量,但心路历程还是有的.
首先是了解到 jFinal 启动入口为执行 JFinal.start()
public static void main(String[] args) {
// JFinal.start("src/main/webapp", 80, "/", 5);
// 在IDEA之下使用JFinal整合的Jetty 启动方式并不支持热加载,所以启动方式需要去掉最后一个参数
JFinal.start("src/main/webapp", 80, "/");
}
第一个错误提示是 找不到或者无法加载主类 com.jfinal.weixin.demo.WeixinConfig
嗯,问题不大,毕竟每次搞新东西总会先遇到一两个错误.
再仔细一看,这个错误提示似曾相识,这不就是当初刚接触 java 时遇见的错误么?
遂直接抛弃 idea,直接 cd 到目录下执行 javac & java
发现错误依然,接着看代码,发现存在继承关系,怀疑是没找着父类.
剔除掉继承之后,成功跑起来.
所以问题基本定位.
嗯,问题不大.
然后就开始怀疑是 idea 的问题(错误的开始~)
查看运行时的 classpath 发现确实缺少依赖 jar 包,
再去跑另外的 SpringBoot 项目(一样从 main 方法启动),发现 classpath 中存在 maven 依赖,
遂确定问题是在 idea 与 maven 的关系中,很大的可能是项目设置漏了某些地方
仔细查看后无果,接着对比两个项目的设置异同...
后来发现 maven 的 jar 依赖生命周期指定为 provided 想了想,没毛病啊~(经过了门口~)
在经历各种百度谷歌,脑海中把整个编译流程过了好几遍...
最后发现一个一两年前的帖子,心态差点崩...
帖子内容是说 idea15 在 springboot 项目中存在当 maven 依赖为 provided 时不加进 classpath 的 bug bug bug
可特么我用的是 idea2017....
立马将依赖状态改成编译时,然后 成了 ...(错误消失)
帖子中给出了针对 SpringBoot 的解决方法,可这是 jFinal 啊,哪来 SpringBootRun
从错误开始到错误解决,整整从 11 点到凌晨 2 点,明明感觉真相就在眼前却一直没冲破那层膜...
后记:
其实如果每坚持到最后解决的话,这个问题很可能就一直遗留下去了(很可能使用别的方法加紧 classpath 中),这样也是一直留下一个梗..好吧~算是自我鼓励.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于