【IntelliJ IDEA java-web 初学之容易遇到的问题及解决办法】
2017-08-31 11:44
561 查看
说明:出现这些问题的时候,使用的idea的版本为 2017.2
对于Maven工程,编译的工作是由Maven程序来完成的,而Maven默认只会把src/main/resources文件夹下的文件拷贝到target/classes文件夹下,所以上图的.hbm.xml都不会被复制到/target/calsses文件夹下,所以hibernate框架在运行的时候,就会报找不到*.hbm.xml的错误。
解决方案1:
在pom.xml中显式地告诉Maven把什么资源文件复制到target/classes文件夹下。
解决方案2:上图的.hbm.xml移动到src/main/resources文件夹下。、
更比较全部的回答:请参考 解决 IDEA 中src下xml等资源文件无法读取的问题
参考博客:
Idea中使用Maven创建Hibernate项目
Intellij Idea 用Maven 创建Hibernate 项目
查阅官方文档得知:
如果,filter package in Struts >= 2.5,这样配置
如果,2.1.3<=filter package in Struts < 2.5,这样配置
如果filter package in Struts < 2.1.3,这样配置
使用idae 开发工具时,而你使用的是maven配置Struts2框架时,一定不要忘了,这一步的配置:
PS:点击中间上方的加号按钮,添加Struts2框架,(最终效果如上图所示)然后再在右边引入默认的struts-default.xml(如已引入依赖的话,默认就有这个文件),关键是把你创建的struts.xml文件也引入。这样就可以了。否则,Struts2框架,会不能正常使用的,虽然idea不报错。
没有找到Java Class的异常
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
用来解析JSP标签。
需要添加jstl-1.1.2.jar到/WEB-INF/libs下即可。
如果如maven添加这个依赖即可:
(2)如果你在使用如下标签的使用,报错(抛红)时:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
解决方案:
1:缺少standard.jar包,如果是maven项目,那就是缺少standard的依赖:
2:原因:找不到jstl类库中的.tld文件
解决办法:
WEB/INF的lib下,除了导入jstl.jar包,还要导入standard.jar包。另外,解压standard.jar包,把.tld文件放在WEB/INF下
3:原因:JSTL的版本及相关URI路径问题。如果是JSTL1.0,uri路径为http://java.sun.com/jstl/core. JSTL1.1及之后的版本,相应uri路径为http://java.sun.com/jsp/jstl/core。
日志的实现都有
- log4j
- logback
- common-logging
(1): 使用:slf4j+log4j
maven需要的依赖:
log4j.properties 的配置文件:
配置的相应意义:
log4j.rootLogger=DEBUG,Console :
DEBUG:表示输出日志的级别,Console :表示日志输出的位置,与后面的三行代码,是有关的。
log4j.logger.org.apache=INFO 这行代码表示:
个性化定制:可以指定某个包名下的日志输出基本
(2)使用:slf4j+logback
maven需要的依赖:
运行代码时,总是报这样的警告:
原因是:IDEA默认把项目的源代码版本设置为jdk1.5,目标代码设置为jdk1.5
解决办法:
1:修改Maven的Settings.xml文件添加如下内容
2:在项目的pom.xml文件中添加:
3:打开项目配置,设置Modules的Language Level为”8”
这样就可以啦。
如果报这样的错误:Error:java: Compilation failed: internal java compiler error
可能你的这里配置不一致,如图:
hibernate
Hibernate 出现org.hibernate.MappingNotFoundException: resource:**.hbm.xml not found问题的解决方案
对于Maven工程,编译的工作是由Maven程序来完成的,而Maven默认只会把src/main/resources文件夹下的文件拷贝到target/classes文件夹下,所以上图的.hbm.xml都不会被复制到/target/calsses文件夹下,所以hibernate框架在运行的时候,就会报找不到*.hbm.xml的错误。
解决方案1:
在pom.xml中显式地告诉Maven把什么资源文件复制到target/classes文件夹下。
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> </build>
解决方案2:上图的.hbm.xml移动到src/main/resources文件夹下。、
更比较全部的回答:请参考 解决 IDEA 中src下xml等资源文件无法读取的问题
报 org.hibernate.MappingException: Unknown entity… 错误可能原因
/** * hibernate4.2系列中sessionFactory获取方式.亲测:在4.2.4中没问题。 */ //创建配置对象 Configuration config = new Configuration().configure(); //创建服务注册对象 ServiceRegistry serviceRegistry= new ServiceRegistrybuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); // 创建会话工厂对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 创建会话 Session session = sessionFactory.openSession(); // 开启事务 Transaction transaction = session.beginTransaction(); /** * hibernate4.35之前sessionFactory获取方式 */ //创建配置对象 Configuration config = new Configuration().configure(); //创建服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); // 创建会话工厂对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 创建会话 Session session = sessionFactory.openSession(); // 开启事务 Transaction transaction = session.beginTransaction(); /** * hibernate4 .35 之后sessionFactory获取方式,亲测5.0以后是可以的。 */ //创建配置对象 Configuration config = new Configuration().configure(); // 创建会话工厂对象 SessionFactory sessionFactory = config.buildSessionFactory(); // 创建会话 Session session = sessionFactory.openSession(); // 开启事务 Transaction transaction = session.beginTransaction();
Field ‘id’ doesn’t have a default value 原因
解决方案参考博客:
Idea中使用Maven创建Hibernate项目
Intellij Idea 用Maven 创建Hibernate 项目
Struts2
struts2不同版本核心filter在web.xml中的配置:查阅官方文档得知:
如果,filter package in Struts >= 2.5,这样配置
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
如果,2.1.3<=filter package in Struts < 2.5,这样配置
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
如果filter package in Struts < 2.1.3,这样配置
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
使用idae 开发工具时,而你使用的是maven配置Struts2框架时,一定不要忘了,这一步的配置:
PS:点击中间上方的加号按钮,添加Struts2框架,(最终效果如上图所示)然后再在右边引入默认的struts-default.xml(如已引入依赖的话,默认就有这个文件),关键是把你创建的struts.xml文件也引入。这样就可以了。否则,Struts2框架,会不能正常使用的,虽然idea不报错。
spring
(1)访问页面异常:nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config没有找到Java Class的异常
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
用来解析JSP标签。
需要添加jstl-1.1.2.jar到/WEB-INF/libs下即可。
如果如maven添加这个依赖即可:
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> </dependency>
(2)如果你在使用如下标签的使用,报错(抛红)时:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
解决方案:
1:缺少standard.jar包,如果是maven项目,那就是缺少standard的依赖:
<!-- https://mvnrepository.com/artifact/taglibs/standard --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
2:原因:找不到jstl类库中的.tld文件
解决办法:
WEB/INF的lib下,除了导入jstl.jar包,还要导入standard.jar包。另外,解压standard.jar包,把.tld文件放在WEB/INF下
3:原因:JSTL的版本及相关URI路径问题。如果是JSTL1.0,uri路径为http://java.sun.com/jstl/core. JSTL1.1及之后的版本,相应uri路径为http://java.sun.com/jsp/jstl/core。
日志打印
java日志有:slf4j,log4j,logback,common-loggin slf4j:是规范/接口日志的实现都有
- log4j
- logback
- common-logging
(1): 使用:slf4j+log4j
maven需要的依赖:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency>
log4j.properties 的配置文件:
log4j.rootLogger=DEBUG,Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.org.apache=INFO
配置的相应意义:
log4j.rootLogger=DEBUG,Console :
DEBUG:表示输出日志的级别,Console :表示日志输出的位置,与后面的三行代码,是有关的。
log4j.logger.org.apache=INFO 这行代码表示:
个性化定制:可以指定某个包名下的日志输出基本
(2)使用:slf4j+logback
maven需要的依赖:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.1</version> </dependency> <!-- 实现slf4j接口并整合--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency>
其他问题
阿里云的镜像:<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
运行代码时,总是报这样的警告:
Warning:java: 目标值1.5已过时, 将在未来所有发行版中删除 Warning:java: 源值1.5已过时, 将在未来所有发行版中删除 Warning:java: 要隐藏有关已过时选项的警告, 请使用 -Xlint:-options。
原因是:IDEA默认把项目的源代码版本设置为jdk1.5,目标代码设置为jdk1.5
解决办法:
1:修改Maven的Settings.xml文件添加如下内容
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
2:在项目的pom.xml文件中添加:
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
3:打开项目配置,设置Modules的Language Level为”8”
这样就可以啦。
如果报这样的错误:Error:java: Compilation failed: internal java compiler error
可能你的这里配置不一致,如图:
相关文章推荐
- 学习Java web 开发遇到的问题及解决办法!
- struts2开发javaWeb 项目时遇到jar包冲突问题的解决办法
- 初学JavaWeb开发遇到的问题与解决
- 20140921遇到的问题-----JAVA----JS------jquery-1.11.1.min.js找不到的原因和解决办法
- VS2008开发环境中容易遇到的3个问题之解决办法
- java项目中遇到的问题及解决办法001
- VS2008中容易遇到的3个问题之解决办法
- PHP5 在调用 JAVA WebService 时遇到的各种问题及解决方法(一)
- VS2008开发环境中容易遇到的3个问题之解决办法
- JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
- 在Windows Server 2008中布置Web站点时遇到的问题及解决办法
- 使用myeclipse将Java项目打成jar包遇到classnotfound的问题解决办法
- JAVA WEB START 在项目中遇到的问题及解决
- 在Windows Server 2008中布置Web站点时遇到的问题及解决办法
- java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
- PHP5 在调用 JAVA WebService 时遇到的各种问题及解决方法(二)
- java项目中遇到的问题及解决办法002
- Sys.webforms.PageRequestManagerParserErrorExcept(ajax刷新用response或transfer跳转遇到的问题解决办法)
- 初学Oracle时遇到的一点问题以及解决办法
- PHP5 在调用 JAVA WebService 时遇到的各种问题及解决方法(一)