POJO

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

龙生   23 Oct 2017
View Details

对于org.apache.commons.dbcp.BasicDataSource的配置认知

Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。 DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断: xml 代码 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3309/sampledb" /> <property name="username" value="root" /> <property name="password" value="1234" /> bean> BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性, 以便Spring容器关闭时,数据源能够正常关闭。除以上必须的数据源属性外,还有一些常用的属性: defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为 true; defaultReadOnly:设置数据源是否仅能执行只读操作, 默认值为 false; maxActive:最大连接数据库连接数,设置为0时,表示没有限制; maxIdle:最大等待连接中的数量,设置为0时,表示没有限制; maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息; validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据, 如你可以简单地设置为:“select count(*) from user”; removeAbandoned:是否自我中断,默认是 false ; removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值; logAbandoned:是否记录中断事件, 默认为 false; C3P0数据源 C3P0是一个开放源代码的JDBC数据源实现项目,它在lib目录中与Hibernate一起发布,实现了JDBC3和JDBC2扩展规范说明的 Connection 和Statement 池。C3P0类包位于/lib/c3p0/c3p0-0.9.0.4.jar。下面是使用C3P0配置一个 oracle数据源: xml 代码 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value=" oracle.jdbc.driver.OracleDriver "/> <property name="jdbcUrl" value=" jdbc:oracle:thin:@localhost:1521:ora9i "/> <property name="user" value="admin"/> <property name="password" value="1234"/> bean> ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释放。 C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制: acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目; acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30; acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000; autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。默认为false; automaticTestTable: C3P0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数,那么属性preferredTestQuery将被忽略。你 不能在这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null; breakAfterAcquireFailure:获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调   用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为 false; checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒,默认为0; connectionTesterClassName: 通过实现ConnectionTester或QueryConnectionTester的类来测试连接,类名需设置为全限定名。默认为 com.mchange.v2.C3P0.impl.DefaultConnectionTester; idleConnectionTestPeriod:隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查; initialPoolSize:初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3; maxIdleTime:最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0; maxPoolSize:连接池中保留的最大连接数。默认为15; maxStatements:JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0; maxStatementsPerConnection:连接池内单个连接所拥有的最大缓存Statement数。默认为0; numHelperThreads:C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行。默认为3; preferredTestQuery:定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个参数能显著提高测试速度。测试的表必须在初始数据源的时候就存在。默认为null; propertyCycle: 用户修改系统配置参数执行前最多等待的秒数。默认为300; testConnectionOnCheckout:因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都 将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 等方法来提升连接测试的性能。默认为false; testConnectionOnCheckin:如果设为true那么在取得连接的同时将校验连接的有效性。默认为false。 读配置文件的方式引用属性: <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/jdbc.properties"/> bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> bean> 在jdbc.properties属性文件中定义属性值: jdbc.driverClassName= com.mysql.jdbc.Driver jdbc.url= jdbc:mysql://localhost:3309/sampledb jdbc.username=root jdbc.password=1234 提示 经常有开发者在${xxx}的前后不小心键入一些空格,这些空格字符将和变量合并后作为属性的值。如: 的属性配置项,在前后都有空格,被解析后,username的值为“ 1234 ”,这将造成最终的错误,因此需要特别小心。 获取JNDI数据源 如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身提供的数据源。应用服务器的数据源 使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的JndiObjectFactoryBean类。下面是一个简单的配置: xml 代码 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/bbt"/> bean> 通过jndiName指定引用的JNDI数据源名称。 Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。下面是使用jee命名空间引用JNDI数据源的配置: xml 代码 <beans xmlns=http://www.springframework.org/schema/beans xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:jee=http://www.springframework.org/schema/jee xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"> <jee:jndi-lookup id="dataSource" jndi-name=" java:comp/env/jdbc/bbt"/> […]

龙生   21 Oct 2017
View Details

FastDFS java client SDK

使用ant从源码构建

使用maven从源码安装

使用maven从jar文件安装

在您的maven项目pom.xml中添加依赖

.conf 配置文件、所在目录、加载优先顺序

.properties 配置文件、所在目录、加载优先顺序

加载配置示例

检查加载配置结果:

  from:https://github.com/happyfish100/fastdfs-client-java

龙生   21 Oct 2017
View Details

使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

转载请注明出处:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生)。 访问GitHub下载最新源码:https://github.com/gaussic/SpringMVCDemo   文章已针对IDEA 2016做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码。 另外:文中的附图部分仍然为旧版本,请参照自身版本进行配置。 前言 由于近期一直在做学术方面的工作,项目开发相关工作并没有花太多的时间,导致这篇文章的更新停步了很长一段时间。现在应大家的要求,补上剩余部分,望能给大家带来一些帮助。由于时间的原因,在开发环境上面有了一定的更新,但是并不造成太大的影响。 一、相关环境 – Intellij IDEA 2016.2 Ultimate – Tomcat 8.0.35 – JDK 1.8.0_92 – Spring 4.2.6 – MySql 5.7 – Maven 3.3.9 – Bootstrap 3.3.5 以上是我要做的这个demo所需要的东西,当然有些是可选的,版本也是可控的。比如说如果你用不惯Maven的话可以自行去官网下载jar包然后导入自己的工程中,如果想要学习下Maven可以看看《Maven视频教程》(偶然找到,这个老师做的视频都挺好,推荐以下),不用完全的去学习Maven,懂大概意思后再去找找IntelliJ IDEA如何配置maven的相关文章就足够了。 还有Bootstrap,纯粹是个人洁癖,不需要这可以去之。 事先声明,请确保IntelliJ IDEA、Tomcat、MySql和JDK都已经安装好。Maven和Bootstrap的话能有则有。前者为了让导包更容易,后者为了让页面更美观。此外,由于jdk以及mysql的安装网上已经有了很多教程,在此为节省篇幅不做介绍。 二、本地Maven与Tomcat的安装 注:如果使用IntelliJ IDEA集成的maven 3.0.5的话,可以忽略此步安装。 1、下载并安装本地maven 点击“Apache-Maven官方网站”进入官网,点击左侧Download选项: 进入了下载页面,往下拉可发现当前版本是3.3.3,点击下面红框中的apache-maven-3.3.9-bin.zip就可下载,下载后解压缩到相应目录下: 新增系统变量MAVEN_HOME:即MAVEN安装目录: 在Path中加入:%MAVEN_HOME%\bin; 在cmd中输入mvn -v,若显示如下,则说明本地maven配置完成: 2、下载并安装本地Tomcat 进入Tomcat官网,点击左侧Download的Tomcat8.0,进入Tomcat的下载页面: 64位Windows版本下载64-bit Windows zip (pgp, md5, sha1),解压到所需目录下: 解压后到\bin\目录下运行startup.bat,如图下所示,如果出现Server startup in xxxx ms说明Tomcat安装成功。 三、创建Maven Web项目 前面说了这么多,差不多基本的东西都保障了(前提保证你已经安装了jdk)。现在进入正题,如何来创建一个Web项目。对于不使用Maven的开发者,可以直接建一个简单的Web项目。使用Maven的话,请按照图进行操作。 菜单File->New Project可进入上图界面,首先选择左边栏Maven,再配置JDK(一般如果之前添加了JDK的话会自动填充,如未添加的话点击旁边的New将JDK目录导入即可)。勾选“Create from archetype“,然后选中4处蓝色位置webapp,点Next,进入如下界面: 这里需要填写GroupId和ArtifactId还有Version,这三个属性目的是标识你的项目的唯一性,比如Tomcat的GroupId是org.apache,即它是apache组织的项目,ArtifactId是tomcat,项目名为tomcat,而我当前使用的Version是7.0.68。这些只在发布时有用,在此可以随便填写,填好后点Next,到如下界面。 打开Maven home directory,可以发现IntelliJ IDEA已经集成了Maven 2和Maven 3两个版本,如果使用默认集成的maven的话,选择Buldled(Maven 3),直接点击Next。 我们也可以导入本地新安装的较新的Maven版本,点击蓝色箭头右边的 … 按钮将Maven路径导入即可,点击Next: 填写项目名,选择项目保存路径,点击Finish: 进入如下界面,maven会在后台生成web项目,这需要等待一定的时间,视网络环境而定,经验发现用较新版本的maven项目生成更快,使用IDEA集成的maven可能会等待很长一段实践。 左边红框中展示了该项目的文件结构。可以发现,它在src/main下创建了一个recources文件夹,该文件夹一般用来存放一些资源文件,还有一个webapp文件夹,用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用。选择右边红框的Enable-Auto-Import,可以在每次修改pom.xml后,自动的下载并导入jar包,这一点在后面详述。 注:如果这一步生成实在太慢的话,建议看一下以下两篇(感谢26楼 wintersun2 同学的提出): 文章1: http://www.cnblogs.com/beiyeren/p/4566485.html 文章2:http://blog.csdn.net/cleverlzc/article/details/50864582 四、Maven自动导入jar包 既然我们要用SpringMVC开发,那肯定少不了SpringMVC的相关jar包。如果不使用Maven的话,那就需要去官网下载相关的jar包,然后导入到项目中。现在使用maven的话,就不需要上网找jar包了。具体容我一一道来。 Maven所做的工作其实很简单,就是自动把你需要的jar包下载到本地,然后关联到项目中来。maven的所有jar包都是保存在几个中央仓库里面的,其中一个最常用的是Maven Repository,即,你需要什么jar包,它就会从仓库中拿给你。那么如何告诉maven需要什么jar包呢?我们看看工程目录,能找到一个pom.xml文件(这个文件在刚创建好项目时就已经展现在了大家面前),maven就是靠它来定义需求的,代码如下:

  我们可以看到这个文件包含了我们之前定义的本项目的gropId等信息,这些信息是该项目的标识,我们不要去改动它们。重点看<dependencies>标签,翻译过来是”依赖“的意思,也就是说把对每个包的需求都称为一个依赖<depedency>,定义在<dependencies>中。在每个<depedency>中,你需要提供的是所需jar包的groupId、artifactId、version这三个必要信息。比如上面我们看到引入可一个junit包,格式如下: […]

龙生   21 Oct 2017
View Details

Apache Ant的使用(1)——基础使用教程

一、什么是Ant 以下介绍来自百度百科: Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。 我们在使用Eclipse开发Android应用时,Eclipse使用的项目构建工具就是Ant。 用户群:大多数的Java设计都被用于管理大量信息流,例如纽约州就使用Apache Ant去管理美国最大的青年计划,每天可以实时更新超过25万学生的记录。 只要使用过Linux系统的读者,应该知道 make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就 是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有 一定的缺陷,但是Ant却克服了这些工具的缺陷。最初Ant开发者在开发跨平台的应用时,同样也 是基于这些缺陷对Ant做了更好的设计。 二、Ant的优点 Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点: 跨平台性。Ant是纯Java语言编写的,所以具有很好的跨平台性。 操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件 是XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环 境中去。 三、Ant的基本使用方法 下面介绍Ant的基本使用方法: 1、首先需要从官网下载apache ant,地址为:http://ant.apache.org/bindownload.cgi 2、下载后的压缩文件直接解压后放到硬盘的目录下就行,然后是配置Ant的环境变量,因为我们需要在命令行下使用ant命令,所以需要将ant的目录加入path环境变量中,步骤如下(windows10系统): (1)鼠标右击桌面“此电脑”,选择属性,然后在出现的窗口左侧选择“高级系统设置”,在弹出的窗口中选择“环境变量” (2)在环境变量配置窗口中的“用户变量”中新增一个变量名为ANT_HOME,值为Ant解压后的目录,如下图所示: 然后在“用户变量”下找PATH变量,如果没有就新增一个PATH变量,如果有就直接在PATH变量中加入新的值,值为“%ANT_HOME%\bin” 经过上面2步就配置好了Ant的环境变量了,cmd中执行ant -version命令后,如下图所示则表示配置成功: 3、开始使用Ant。 Ant的核心就是配置文件build.xml,在build.xml文件中配置相关的任务后,使用ant命令即可自动执行,所以我们需要掌握ant的相关配置,这里先在桌面新建一个目录TestAnt,然后进入该目录,新建一个build.xml文件,并加入如下内容: [html] view plain copy <?xml version="1.0"?> <project name="HelloWorld" default="test" basedir="">     <target name="test">         <echo message="test echo messsage, basedir=${basedir}" />     </target> </project> 在命令行下我们进入上面build.xml所在的目录,然后执行ant命令,会出现如下图所示的结果: 下面就来解释上面的build.xml文件的配置: (1)build.xml需要遵循一定的格式,这样ant命令才能正确执行,一个build.xml文件是以<project>标签为根节点的,<project>节点中可以指定name属性,表示项目的名称,basedir代表项目的根目录,default表示项目的默认任务名,这里的default属性值为test,则执行ant命令时会找default对应的target去执行(如果ant命令没有指定任务名的话)。 (2)<project>标签中定义了一个<target>标签,该标签表示的就是一个任务,<target>标签中的name属性表示任务名,我们可以在命令行下直接使用ant + 任务名来执行某个特定的任务,例如上面的例子中,我们可以使用ant test命令去执行name值为test的target任务,由于我们在<project>标签中配置了default属性为test,所以在命令行下只需要执行ant命令就可以运行test任务了。 (3)<echo>标签表示在命令行下输出,类似于java中的System.out.println(),在<echo>标签中配置message属性后即可在命令行下打印该属性的值。如上图中显示的[echo],即为我们配置的message属性的值。 (4)使用${}可以获取某个变量的值,花括号中为变量名,如上图中打印出的C:\Users\yubo7\Desktop\TestAnt,即为basedir的值,由于在<project>标签中我们给basedir属性的值为空,所以basedir的值默认为build.xml所在的路径。 上面的例子是一个最基本的build.xml文件的结构,build.xml文件还有很多配置项,下面举例几个配置项: <property>标签,用于声明键值对: [html] view plain copy <?xml version="1.0"?> <project name="HelloWorld" default="test" basedir="">     <target name="test-property">         <property name="name" value="zhangsan" />         <property name="age" value="25" />         <echo message="this is target test2." />         <echo message="java version: ${ant.java.version}" />         <echo message="project name: ${ant.project.name}" />         <echo message="ant file: ${ant.file}" />         <echo message="name = ${name}, age = ${age}" />     </target> </project> 执行ant test-property命令后,结果如下图: <property>标签用于声明一个属性,其中name为属性名,value为属性值,访问属性值时使用${属性名}。 <copty>标签,用于文件拷贝: [html] view plain copy <?xml version="1.0"?> <project name="HelloWorld" default="test" basedir="">     <target name="test-copy">         <copy file="test.txt" tofile="build/test.txt" />     </target> </project> 执行ant test-copy命令后,结果如下图所示: <copy>标签表示文件或文件夹的拷贝,上面的配置中,file属性表示要拷贝的文件路径,tofile属性表示要拷贝的目的文件路径。如果待拷贝的文件不存在,则命令执行会失败,如果目的文件路径不存在,则命令执行时会自动创建目录。如果是要拷贝整个目录,需要下面的配置: [html] view plain copy <?xml version="1.0"?> <project name="HelloWorld" default="test" basedir="">     <target name="test-copy-dir">         <copy todir="build/dest_dir">             <fileset dir="origin_dir" />         </copy>     </target> […]

龙生   21 Oct 2017
View Details

HttpApplication 事件

命名空间:   System.Web 程序集:  System.Web(位于 System.Web.dll) 事件 名称 说明 · AcquireRequestState 当 ASP.NET 获取与当前的请求相关联的当前状态 (例如,会话状态)。 · AuthenticateRequest 当安全模块已建立的用户标识时出现。 · AuthorizeRequest 安全模块已验证用户身份验证时发生。 · BeginRequest 作为执行的 HTTP 管道链中的第一个事件发生,当 ASP.NET 的请求做出响应。 · Disposed 释放应用程序时发生。 · EndRequest 作为执行的 HTTP 管道链中的最后一个事件发生,当 ASP.NET 的请求做出响应。 · Error 当引发未处理的异常时发生。 · LogRequest ASP.NET 执行当前请求的任何日志记录之前发生。 · MapRequestHandler 此 API 支持 产品 基础结构,不应从代码直接使用。 在选择该处理程序对请求作出响应时发生。 · PostAcquireRequestState 获取与当前的请求相关联的请求状态 (例如,会话状态) 时发生。 · PostAuthenticateRequest 当安全模块已建立的用户标识时出现。 · PostAuthorizeRequest 当前请求的用户已被授权时发生。 · PostLogRequest 当 ASP.NET 已完成处理的事件处理程序时发生 LogRequest 事件。 · PostMapRequestHandler 当 ASP.NET 已映射到相应的事件处理程序的当前请求时出现。 · PostReleaseRequestState 当 ASP.NET 已完成执行所有请求事件处理程序和存储数据的请求状态时发生。 · PostRequestHandlerExecute 当 ASP.NET 事件处理程序 (例如,一个页面或 XML Web 服务) 完成执行时发生。 · PostResolveRequestCache ASP.NET […]

龙生   21 Oct 2017
View Details

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderList

最近在用idea部署war文件的时候,总是出现了部署失败的错误,刚开始并没有在意,但是现在次数越来越多了,不得不在意了,然后就在百度上搜,然后就有了各种说法 1,错误的信息是:

根据错误信息,说是一个listener加载失败了,失败原因请看容器log文件,我的idea配置的tomcat是自己的本地的tomcat,然后进本地的目录一瞅,木有,那么这个日志放在哪里了?然后就开始找这个日志文件在哪里。开始百度。。。 经历过种种百度,然后最后得出的结果是在这里

好了,第一步完成,找到了日志文件,那么日志文件里面的错误信息是什么呢?首先,有下面几个日志信息 根据时间来看,那就看catalina和localhost这两个吧,最后在locaohost的log文件里找到了这样的一句话:

意思就是说contextloaderlistener这个class没有加载成功,说是配置的问题,然后继续百度,有一下几种情况 1,listener的配置要放在servlet前面,我看我的配置文件,的确是这样的, 2,就是tomcat缓存问题,把project的tomcat去掉后重新部署上去,我试了试,不行 3,说是没有spring的包,我想着一会好,一会不好的,如果真的是spring包的话,那应该就一直不好,所以排除了,(结果这里出现问题了) 4,重新安装tomcat,这个方法我没有试,不知道效果如何 突然,在论坛里看有人说看看你的tomcat服务器里的项目的web-info\lib下有没有这个包,然后我一查,果然没有spring的包。好的,这里问题算是找到了。就是因为这个没有包才导致的。 这个就提醒我了,不管项目上是不是加载了依赖包,如果部署到服务器上没有依赖的那个包,那就是白搭,肯定会出问题的。 最终我的web-inf\lib里面的目录结果如下 然后开启debug,成功。   上面五种方法起个参考作用,主要是第五种,用事实来说话。我的项目是idea分模块的,具体的怎样加到Lib里可以百度。   解决问题的过程是令人痛苦的,解决后感觉原来是这样啊。 from:http://www.cnblogs.com/ningheshutong/p/6490167.html

龙生   20 Oct 2017
View Details

解决Perhaps you are running on a JRE rather than a JDK?问题

Maven-No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? [INFO] Scanning for projects… [INFO] [INFO] ———————————————————————— [INFO] Building helloworld 0.0.1-SNAPSHOT [INFO] ———————————————————————— [INFO] [INFO] — maven-clean-plugin:2.5:clean (default-clean) @ helloworld — [INFO] Deleting H:\mavenok\helloworld\target [INFO] [INFO] — maven-resources-plugin:2.6:resources (default-resources) @ helloworld — [INFO] Using ‘UTF-8‘ encoding to copy filtered resources. [INFO] skip non existing resourceDirectory H:\mavenok\helloworld\src\main\resources [INFO] [INFO] — maven-compiler-plugin:3.1:compile (default-compile) @ helloworld — [INFO] Changes detected – recompiling the module! [INFO] Compiling 1 source file to H:\mavenok\helloworld\target\classes [INFO] ————————————————————- […]

龙生   20 Oct 2017
View Details

pom.xml出现web.xml is missing and is set to true解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This is a maven error. It says that it is expecting a web.xml file in your project because it is a web application, as indicated by <packaging>war</packaging>. However, for recent web applications a web.xml file is totally optional. Maven needs to catch up to this convention. Add this to your maven pom.xml to let maven catch up and you don’t need to add a useless web.xml to your project: 大意是说这是一个Maven错误,在最近的web应用开发中web.xml文件已经变得可有可无了。不过Maven还没有跟上这一变化,我们只要在pom.xml文件中手动添加如下配置:

“告知”maven即可。这样做的好处是我们不必在项目生中成一个无用的web.xml文件。在更新版本(具体从哪一个版本开始我也不知道~~)的maven中已经不存在web.xml文件缺失的问题,我们只需要处理<failOnMissingWebXml>被设置成tue的问题即可。也就是在pom.xml中添加如下配置即可。

其他方案:(生成web.xml——>部署运行时文件路径) you can do it also like this: Right click on Deployment Descriptor in Project Explorer. Select Generate Deployment Descriptor […]

龙生   20 Oct 2017
View Details
1 217 218 219 433