搭建spring项目报错

搭建Spring项目时报错:

五月 23, 2018 10:29:47 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6e551f11: startup date [Wed May 23 22:29:47 CST 2018]; root of context hierarchy
五月 23, 2018 10:29:47 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

信息: Loading XML bean definitions from class path resource [applicationContext.xml]

原因:在创建spring项目后,缺少日志jar所导致的问题,所以只需要导入相应的日志jar即可。

日志jar相关:

  commons-logging:避免和具体的日志方案直接耦合,通过统一接口解耦。

  log4j:最典型日志解决方案。具体的日志系统 。通过 slf4j-log4j12初始化Log4j,达到最终日志的输出。

        注意log4j.properties的添加(在src下)

  slf4j(Simple Logging Facade for Java):为java提供的简单日志门面。slf4j入口是众多接口的集合,所有接口都定义在 slf4j-api 中

                              (注:导入时不要同时出现多个实现slf4j的包出现,否则编译时 会报错

  slf4j-api:本质上 slf4j-api是个接口定义

  slf4j-log4j12:链接slf4j-api和log4j中间的适配器,实现了slf4j-apiz中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的 getSingleton()方法


org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.tarena.demo2.JdbcDataSource] for bean with name 'dataSource' defined in class path resource [applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com.tarena.demo2.JdbcDataSource
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1327)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:594)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1396)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:959)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:683)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.test1.TestCase.test(TestCase.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: com.tarena.demo2.JdbcDataSource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:236)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:392)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1348)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1319)
    ... 32 more

找不到id为“dataSource”的bean,修改相关的路径就可以了

### JDK17 Maven项目搭建报错解决方案 在搭建JDK17的Maven项目时,可能会因为多种原因导致编译或依赖问题。以下是针对此类问题的具体解决方法: #### 1. 配置正确的JDK版本 确保项目的`pom.xml`文件中指定了正确的Java版本。通过设置`<properties>`标签中的`java.version`属性以及对应的编译器目标和源版本来实现这一点[^1]。 ```xml <properties> <java.version>17</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> </properties> ``` 如果未正确配置这些参数,则可能导致默认使用的JDK版本与实际需求不符,从而引发编译错误[^4]。 #### 2. 检查IDE的JDK配置 除了在`pom.xml`中定义外,还需要确认开发环境(如IntelliJ IDEA或Eclipse)已手动指定为JDK17作为项目的构建工具链。对于某些集成开发环境而言,默认可能仍会采用较低版本的JDK执行操作,这同样会造成兼容性问题。 - **IntelliJ IDEA**: 转至 `File -> Project Structure -> SDKs`, 添加并选择合适的JDK路径;同时调整模块下的语言级别(Language Level)到对应的标准。 - **Eclipse**: 可经由菜单栏进入 `Window -> Preferences -> Java -> Installed JREs`, 将当前工作区切换成支持的新版JDK实例。 #### 3. 解决缺失构件(Missing Artifact)的问题 当出现类似于“Missing artifact jdk.tools:jdk.tools:jar:1.8”的提示时,通常是因为旧版Maven无法识别新特性所致[^2]。对此建议升级本地安装的Apache Maven至最新稳定发行版,并重新刷新依赖关系树(`mvn clean install`)完成同步更新过程。 另外需要注意的是,自JDK9以后官方移除了独立打包形式jdk.tools.jar的内容项,因此无需再额外声明此条目即可正常运作[^3]。 #### 4. 处理Spring Boot插件初始化异常 假如是在引入了诸如`spring-boot-maven-plugin`之后发生冲突状况的话,可以尝试修改其内部排除规则部分以适应现有条件变化情况[^5]: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 移除不必要的Lombok组件 --> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 以上措施能够有效缓解因第三方库干扰所引起的连锁反应现象的发生几率。 --- ### 总结 综上所述,要成功建立基于JDK17环境下运行良好的Maven工程项目,需着重关注以下几个方面:合理规划全局变量设定、精确校准外部软件平台关联参数值范围、及时修补潜在隐患漏洞位置等多维度综合考量因素共同作用下达成最终目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值