英文:
Exception in thread "main" java.lang.IllegalArgumentException in REST API
问题
对不起,我无法执行代码部分的翻译。如果您有任何其他需要翻译的文本或问题,请随时提出,我将尽力帮助您。
英文:
So I am quite new to REST API development and for my app, I used spring boot initializer. I was getting an error with hibernate being unable to access my oracle database and I later found that I had mistakenly added a derby dependency which was somehow clashing with the DB access. After I took it out and what is related to it I got this error. Am I missing something important here?
Also, I'd like to apologize for how long this is but I'm truly desperate
Here is my error
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.devtools.restart.RestartScopeInitializer
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:445)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:427)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:420)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:272)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:253)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.example.TNDservice.TnDserviceApplication.main(TnDserviceApplication.java:17)
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/KotlinDetector
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:187)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:441)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.springframework.core.KotlinDetector
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)
... 9 more
this is my pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>TNDservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>TNDservice</name>
<properties>
<java.version>1.8</java.version>
<springframework.version>4.3.0.RELEASE</springframework.version>
<jackson.library>2.9.8</jackson.library>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<hibernate.version>4.3.6.Final</hibernate.version>
<jstl-version>1.2</jstl-version>
</properties>
<dependencies>
<!-- Springboot dependancies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<!--hibernate-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
<!-- jsr303 validation -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
</dependency>
<!--Oracle sql -->
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc10</artifactId>
<scope>runtime</scope>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.library}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.library}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.library}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.library}</version>
</dependency>
<!--lambok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.12.Final</version>
</dependency>
</dependencies>
<pluginRepositories>
<pluginRepository>
<id>icm</id>
<name>Spring Framework Milestone Repository</name>
<url>http://maven.icm.edu.pl/artifactory/repo</url>
</pluginRepository>
</pluginRepositories>
<build>
<finalName>RESTservice</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
this is my main class
@SpringBootApplication
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "con.example.TNDservice")
public class TnDserviceApplication {
public static void main(String[] args) {
SpringApplication.run(TnDserviceApplication.class, args);
}
}
答案1
得分: 0
你的 spring-boot 版本是2.2.5,但 spring framework 版本是4.3.0。我认为对于这个 spring-boot 版本,默认的 spring framework 版本应该是5.x.x。你可以尝试更新 spring framework 版本以适配 spring-boot,或者使用 https://start.spring.io/ 生成包含所需版本的 pom 文件。这个链接可能也会有帮助:https://stackoverflow.com/questions/52734495/unresolvable-dependency-org-springframework-core-kotlindetector-iskotlinreflectp
英文:
Your spring-boot version is 2.2.5 but spring framework version is 4.3.0, I think by default spring framework version is 5.x.x for this spring-boot version, you could try updating spring framework version for the spring-boot or use https://start.spring.io/ to generate the pom with required versions. This might also help https://stackoverflow.com/questions/52734495/unresolvable-dependency-org-springframework-core-kotlindetector-iskotlinreflectp
答案2
得分: 0
你不应该在没有非常好的理由的情况下手动覆盖依赖版本。
Spring Boot 预定义的版本经过验证,能够很好地一起工作,但是你正在严重降级一些版本。
所以,你可能希望删除这些行:
<springframework.version>4.3.0.RELEASE</springframework.version>
<jackson.library>2.9.8</jackson.library>
<hibernate.version>4.3.6.Final</hibernate.version>
<jstl-version>1.2</jstl-version>
英文:
You shouldn't manually override the dependency versions without very good reason.
The ones predefined with Spring Boot are verified to work well together, but you are downgrading a couple of versions severely.
So, you might want to delete these lines:
<springframework.version>4.3.0.RELEASE</springframework.version>
<jackson.library>2.9.8</jackson.library>
<hibernate.version>4.3.6.Final</hibernate.version>
<jstl-version>1.2</jstl-version>
专注分享java语言的经验与见解,让所有开发者获益!
评论