Java Spring给出非法状态异常:加载ApplicationContext失败,提示如何解决?
NetBeans向我显示以下错误消息: 未能加载ApplicationContext org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:107)org.springframework.test.context.web.ServletTestExecutionListener.setupRequestContextIfEssential(ServletTestExecutionListener.java:190)org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)org.springframework.testContext.TestContextManager.prepareTestInstance(TestContextManager.java:242)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)org.junit.runners.ParentRunner.runners儿童(ParentRunner.java:236)org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)org.springframework.test.context.junit4.statements.runnextestclasscallbacks.evaluate(runnextestclasscallbacks.java:70)org.junit.runners.ParentRunner.ParentRunner.java:309)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)fi.helskini.cs.tmc.testrunner.testrunner$TestingRunnable.runTestCase(testrunner.java:134)fi.helskinki.cs.tmc.testrunner.testrunner$TestingRunnable.doRun(testrunner.java:89)fi.helskingi.cs.tmc.testrunner$TestingRunnable.runner.runnable.run(TestRunner.java:70)java.lang.Thread.run(Thread.java:748) 这是我的代码: Hellomodel应用程序:Java Spring给出非法状态异常:加载ApplicationContext失败,提示如何解决?,java,spring,Java,Spring,NetBeans向我显示以下错误消息: 未能加载ApplicationContext org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)org.springframework.test.context.support.DefaultTestContext.getApplic
package wad.hellomodel;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloModelApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(HelloModelApplication.class, args);
}
}
Hellomodel控制器:
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloModelController {
@GetMapping("/")
public String title(Model model, @RequestParam String title) {
model.addAttribute("title", title);
return "index";
}
@GetMapping("/")
public String person(Model model, @RequestParam String person) {
model.addAttribute("person", person);
return "index";
}
}
Localhost也不会显示。我对Spring真的很陌生,我想知道为什么这不起作用
编辑:
这是我的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>wad</groupId>
<artifactId>Set01_06.HelloModel</artifactId>
<name>Set01_06.HelloModel</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M5</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- TMC -->
<dependency>
<groupId>fi.helsinki.cs.tmc</groupId>
<artifactId>edu-test-utils</artifactId>
<version>0.4.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>tmc</id>
<name>TMC repo</name>
<url>http://maven.testmycode.net/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>tmc</id>
<name>TMC repo</name>
<url>http://maven.testmycode.net/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
堆栈跟踪中的第一行讨论了测试上下文,但您向我们展示了生产代码。您有任何测试吗?您的pom如何?我添加了pom和测试。整个包由大学提供,所以我不太确定这是他们的问题还是我的问题?堆栈跟踪看起来不完整(没有“原因:”)格式与通常不同(无“at”)。也许Netbeans只是向您展示了一个摘要?一个完整的stacktrace应该被写入控制台。堆栈跟踪中的第一行讨论了测试上下文,但您向我们展示了生产代码。您有任何测试吗?您的pom呢?我添加了pom和测试。整个包是由大学提供的,所以我不太确定是否有是他们的问题还是我的问题?stacktrace看起来不完整(否“由:”)并且与通常的格式不同(否“在”)。可能Netbeans只是向您显示一个摘要?应该将完整的stacktrace写入控制台。
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@Points("01-06")
public class HelloModelTest {
@Autowired
private MockMvc mockMvc;
@Test
public void bothShownOnPage() throws Exception {
this.mockMvc.perform(get("/?title=HelloWorld&person=Robot")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Robot")))
.andExpect(content().string(containsString("HelloWorld")))
.andExpect(content().string(not(containsString("Girl"))))
.andExpect(content().string(not(containsString("SuperStory"))));
this.mockMvc.perform(get("/?title=SuperStory&person=Girl")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(not(containsString("Robot"))))
.andExpect(content().string(not(containsString("HelloWorld"))))
.andExpect(content().string(containsString("Girl")))
.andExpect(content().string(containsString("SuperStory")));
}
}