我正在使用Java + Spring Boot + Gradle + Docker。 我的Spring Boot应用程序突然开始发出错误消息“未为属性'mainClassName'指定值。几天前,它仍能正常工作。
我用Google搜索并在下面添加到我的gradle脚本中:
mainClassName = 'com.test.MyMainClass'
现在该项目已成功构建,但使用docker运行时出现错误提示。
Exception in thread "main" java.lang.ClassNotFoundException:
com.test.MyMainClass
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
以下是我的docker文件:
FROM oraclejdk8:slim
ADD build/libs/MyTest.jar /MyTest.jar
CMD [ "java", "-jar", "/MyTest.jar" ]
我已经用Google搜索,但是找不到任何解决方案。请帮忙。
更新 我下载了罐子并将其提取。我看到它不包含src / main / java中的任何类。因此,核心问题是我的类(也包括主类)没有被捆绑在jar中。
这很奇怪,因为以前相同的代码可以正常工作。有人有指针吗?
我在本地计算机(windows)上运行了gradle构建,该构建陷入了 bootRepackage 任务。下面是最后一个日志:
executing actions for task ':bootRepackage'.
02:42:47.123 [INFO] [org.gradle.api.Task] Setting mainClass: com.test.MyMainClass
Building 81% : :bootRepackage
如果我禁用它,然后运行。构建完成,jar包含我的类。
我应该禁用该bootRepackage任务吗?任何帮助将不胜感激。
最初的问题是在jenkins在Linux上构建期间出现的。