当我尝试使用 IDEA Intellij 选项中的运行配置在我的 gradle 项目中运行main
方法时,我收到如下异常:
15:12:03: Executing external task 'run'...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder
at pl.edu.agh.flowshop.utils.ConfigReader.getMachinesConfig(ConfigReader.java:46)
at pl.edu.agh.flowshop.utils.ConfigReader.createModel(ConfigReader.java:30)
at pl.edu.agh.flowshop.Experiment.main(Experiment.java:25)
Caused by: java.lang.ClassNotFoundException: com.google.gson.GsonBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
Run Code Online (Sandbox Code Playgroud)
这让我很困扰,因为如果我只是从相同的配置创建可运行的 jar,一切都会正常工作。我尝试过刷新 gradle 项目以及“无效缓存/重新启动”选项,但没有一个有帮助。
我的 build.gradle 文件:
group 'pl.edu.agh'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'application'
sourceCompatibility = 1.7
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
sourceSets.main.java.srcDirs = ['src/main/java']
mainClassName = 'pl.edu.agh.flowshop.Experiment'
repositories {
mavenCentral()
flatDir …
Run Code Online (Sandbox Code Playgroud) 在我的项目中,我有以下存储库结构:
public interface IRepository<T> { ... }
public abstract class AbstractRepository<T> implements IRepository<T> { ... }
@Repository
public class ARepository extends AbstractRepository<A>
implements IRepository<A> { ... } // added line
@Repository
public class BRepository extends AbstractRepository<B>
implements IRepository<B> { ... } // added line
@Repository
public class CRepository extends AbstractRepository<C>
implements IRepository<C> { ... } // added line
Run Code Online (Sandbox Code Playgroud)
现在我想将它们注入到适当的服务中,如下所示:
public class MyServiceImpl implements MyService {
@Autowire
IRepository<A> arepository;
...
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当 Spring 上下文开始时,我收到以下错误No qualifying bean of type 'some.package.IRepository<?>' available: …