- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能不是一个常见的场景,因为我们基本上不会同时使用EJB和SpringBoot,并且在Google上几乎找不到相关主题。
问题
当我将 javaee-api
添加到 SpringBoot 项目 pom.xml
中时,默认的 SpringBoot 测试将失败。
详情
我的项目几乎是一个空的Spring原型(prototype)项目(从start.spring.io开始),包含一个Spring入口类App.java
,一个Spring测试类AppTest.java
和一个 pom.xml。我对原型(prototype)的更改是添加了 javaee-api 依赖项。请参阅 pom.xml
依赖项:
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- We need to include the javax.servlet API specs, the implementation will be provided by Wildfly / JBoss-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
结果
运行测试 AppTest.java
将失败。一旦我删除了 javaee-api Artifact ,一切就都好了。添加javaee-api
Artifact 时的错误堆栈:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultValidator' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1708)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:139)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
... 24 more
Caused by: java.lang.NoSuchMethodError: javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String;
at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.<init>(ValidationBootstrapParameters.java:63)
at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:540)
at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:337)
at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:309)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1767)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1704)
... 39 more
Process finished with exit code -1
摘要
我将在同一个项目中使用 SpringBoot2
和 EJB3
,但看起来 SpringBoot 不允许添加 javaee-api
依赖项。我很好奇他们是否可以合作以及为什么会发生冲突。网上没有太多信息,所以我提出这个问题,希望值得讨论。
最佳答案
looks SpringBoot do not allowed to add javaee-api
事实并非如此。 Spring Boot 通过其 RI ( Hibernate Validator 6 ) 使用 JSR 380 2.0 (Bean Validation 2.0)。
NoSuchMethodError
表示您添加了不兼容的 API 版本。如果您无法使用验证 API 2.0(我认为是 Java EE 8),请考虑同时使用 Spring Boot 1.5
。
关于java - 在 pom.xml 中添加 javaee-api 依赖项时 SpringBoot 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496235/
如标题,带前缀“javaee:”和不带“javaee:”的标签有什么区别。 我发现我们需要使用不带“javaee:”的标签来设置配置,而带有前缀“javaee:”的标签不起作用 例如: de
我意识到这些依赖项是针对 Java servlet 规范进行编译所必需的,等等,但我不清楚它们之间的区别,以及何时应该使用一个而不是另一个。 它们之间有什么区别?一个是另一个的超集吗? java
我想要一个用 maven 构建的 Java JEE6 项目,我想要它标准 所以,我把它放在我的 pom.xml 中: javax javaee-api 6.0 pro
当我在 Android Studio 3.3.1 中更新依赖项时,收到以下错误:Android Studio版本:3.3.1 Gradle 版本:5.4 Caused by: com.android.
首先让我说这不是我的实际情况,但我问这个问题更多是为了我自己的知识并在这里获得其他人的意见。 我使用过 Spring 和 EJB3/JBoss,对于我构建的较小类型的应用程序,Spring(需要时 +
我正在开发一个启动事务、注册一些资源、启动另一个事务并根据先前事务注册的资源执行处理的应用程序。例子是: 注册: @Stateless @LocalBean public class Register
我正在编写一个 JavaEE 应用程序,但遇到以下问题:如果我在其中一个类 (TraceMessage) 中初始化任何新变量并启动该应用程序,我将收到以下错误: java.io.InvalidClas
我是 Java EE 的初学者。今天我尝试按照本教程学习 Java EE: http://netbeans.org/kb/docs/javaee/javaee-gettingstarted.html
我们构建 3 层企业解决方案,通常由多个 webapp 和 ejbjar 模块组成,它们都与数据库对话并具有多个外部集成点。 每个模块通常都需要自己的配置,这些配置可以在解决方案的生命周期内发生变化。
在javaee中Model1模型是以jsp页面为中心的,jsp既要对浏览器的request做出逻辑处理(使用javabean),访问数据库也要显示出相关的页面。 在model1模型中,没有servl
我们在聊天的时候的或者留言的时候,有部分词是不允许发表出来。我们可以采用过滤器实现这个功能。 我们只是简单利用过滤器实现这个过滤的功能,有些地方没写的很全 前台代码:
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我的问题更多的是概念性的,而不是实际的。 我读过 国际奥委会和 迪 ,并且我认为我已经理解了这些概念(IoC比DI更通用,还有其他方法可以实现IoC)。 在所有文章中,当有人说 国际奥委会 ,提到像
我创建了一个javaee应用程序,除其他外,它必须使用朴素贝叶斯执行情感分析。为了使情感算法发挥作用,我们必须首先对其进行训练,因此我想创建一个对象,在服务器启动时处理训练,以避免一遍又一遍地训练。我
我有一个 JSF 页面,它将创建一个新的 Comment。我将该页面的托管 bean 设为 RequestScoped 托管 bean。 @ManagedBean(name="PostComment"
我正在表单中工作,以根据 OpenLDAP 实现登录用户。 我想做一些简单的事情,不依赖于 cointainer,所以我真的不想使用 Wildfly 领域。 我能够制作一个与 OpenLDAP 服务器
我要改写我的 previous question .我们的服务器上有一个网站,由我们的母公司(在全局范围内的台湾)使用 NetBeans 开发。服务器上没有任何内容来自 NetBeans,没有引用、构
有一个servlet 接受来自客户端的文件并将它们存储在一个文件夹中。现在需要列出此文件夹中的文件并创建指向它们的链接(即,单击文件名并从您那里下载)。 现在只输出文本形式的文件列表。如何创建到它们的
我一直在用 Spring MVC 测试一个 Web 应用程序,我目前正在为帐户开发一个编辑器页面。此 JSP 页面能够编辑一个或多个帐户,服务于不同的目的。例如,普通用户可以在此页面上编辑帐户数据。另
我按照本教程使用socialauth库: https://github.com/3pillarlabs/socialauth/wiki/Getting-Started-with-implementin
我是一名优秀的程序员,十分优秀!