后端开发工具使用
后端开发工具使用
开发环境配置
【1】eclipse常见项目配置问题
a.Eclipse导入项目.json文件报错(出现小红叉)
使用 eclipse 导入一个 Maven 项目之后,里面的 .json 文件报错出现小红叉
解决办法:Window > Preferences > Eclipse > 搜索 Validation > 右侧将 “JSON Validator” 勾选关闭即可。
b.引入项目时部分文件报错
与项目配置相关,常见报错通过引入相关jar进行调整
修改tomcat配置
c.项目导入
问题描述:eclipse下项目右键没有"build path"选项,从SVN检出来的项目发现无法进行build path,也不报错,任何类之间也无法关联(Ctrl+右键无法点进去)。
分析:.classpath是Eclipse的工程文件,SVN上一般只有项目的源码信息,工程信息(每个人用的Eclipse版本不一样,甚至IDE工具都不一样)、编译后的文件等都不需要上传到SVN库中。没有.classpath的Java工程文件无法正常的编辑,Eclipse无法报语法错误,无法使用 ctrl+鼠标箭头查看类、方法等声明和实现,项目就编译不了等。
Window->Show View->Project Explorer,打开项目窗口,随后根据飘红的信息提示完成项目配置。一般常见的是jdk版本配置不同或者是关联依赖没有构建
针对普通项目直接导入即可,或者将其他正常项目的.peoject配置文件复制过来,随后refresh一下工程项目。
针对maven项目则可通过项目右键 ----》Configure ----》Convert to Maven Project ,随后解决关联依赖问题。
【2】JDK配置
不同JDK版本切换,安装不同的JDK版本,通过设定环境变量默认引用关联的JDK版本配置
环境变量配置
区分安装版和免安装的JDK,安装/解压完成则相应配置环境变量(高级环境变量)
环境变量 | 配置说明 |
---|---|
CLASSPATH | .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; |
JAVA_HOME | 指定jdk安装目录对应的jdk层级目录 eg:C:\Program Files\Java\jdk1.8.0_152 |
Path | 指定jdk安装目录对应的jre层级的bin目录 eg:C:\Program Files\Java\jre1.8.0_152\bin |
JDK版本切换:检查是否安装了多个jdk,检查Path数据:将自己首选的jdk配置放置在前面,默认选择;或者是配置多个java_home数据通过配置进行切换
(1)windows环境
# 查看java版本
java -version
# 查看java相关路径
where java
配置不同的环境变量,随后定义一个变量参数指定相应的环境变量值,实现版本切换
(2)linux环境
查看版本:
java -version
查看安装路径:
whereis java
查看运行版本信息(个人感觉类似于win中的 where java):
which java
输出JAVA_HOME路径:
echo $JAVA_HOME
输出path路径:
echo $PATH
开发工具引用JDK配置
在开发工具中可设定指定不同的JDK环境
(1)eclipse
Window->Preferences->Java->Installed JREs->点击选择添加或编辑jre环境(根据自定义jdk的安装目录进行选择)
(2)idea
File->Project Structure->选择指定jdk安装目录进行配置
JDK配置常见问题
(1)不是内部或外部命令,也不是可运行的程序
遇到“不是内部或外部命令,也不是可运行的程序”这一类的问题,一般环境变量Path的设置问题,可以通过设置相应的变量值进行路径的添加
右键“我的电脑”-->选择“属性”-->“高级系统设置”,选择环境变量,编辑加入Path信息,引入JDK相关安装路径
编辑器工具
【1】eclipse使用
开发工具注册码参考网站:http://www.98key.com/
基本配置
(1)Code Template设置
Window->Prederences->Java->Code Templates(Formatter)->进入指定选项,导入相关文件进行配置
参考相关配置文件导入:
Window->Prederences->Java ->Code Templates->Comments->导入 codetemplates.xml文件
Window->Prederences->Java->Code Templates->Code ->导入 code.xml文件
Window->Prederences->Java->Formatter->导入 formatter.xml文件
导入相关文件之后可根据自己的书写习惯编制属于自己的标签内容,可自动生成doc文档注释
参考模板配置链接:
https://www.liangzl.com/get-article-detail-6813.html
https://cloud.tencent.com/developer/article/1374342
配置参考:
设置注释模板的:Window -> Preference -> Java->Code Style -> Code Template ,展开Comments节点即所有需设置注释的元素,模板配置有两种方式:逐个调整或配置文件导入
下方【Pattern】区域会显示类注释模板内容,点击右则的【Edit】按钮可以对注释模板内容进行修改。 选择【Insert Variable】可以对【Pattern】中的【Title】值进行设置修改。
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<template
autoinsert="false"
context="filecomment_context"
deleted="false"
description="Comment for created Java files"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.filecomment"
name="filecomment">
/**
* @Title: ${file_name}
* @Package ${package_name}
* @Description: ${todo}(用一句话描述该文件做什么)
* @author ${user}
* @date ${date} ${time}
* @version V1.0
*/
</template>
<template
autoinsert="false"
context="typecomment_context"
deleted="false"
description="Comment for created types"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.typecomment"
name="typecomment">
/**
* @ClassName: ${type_name}
* @Description: ${todo}(这里用一句话描述这个类的作用)
* @author ${user}
* @date ${date}
*
* ${tags}
*/
</template>
<template
autoinsert="false"
context="fieldcomment_context"
deleted="false"
description="Comment for fields"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment"
name="fieldcomment">
/**
* @Fields field:field:{todo}(用一句话描述这个变量表示什么)
*/
</template>
<template
autoinsert="false"
context="constructorcomment_context"
deleted="false"
description="Comment for created constructors"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment"
name="constructorcomment">
/**
* 创建一个新的实例 ${enclosing_type}
*
* ${tags}
*/
</template>
<template
autoinsert="false"
context="methodcomment_context"
deleted="false"
description="Comment for non-overriding methods"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.methodcomment"
name="methodcomment">
/**
* @Title: ${enclosing_method}
* @Description: ${todo}(这里用一句话描述这个方法的作用)
* @param ${tags} 参数
* @return ${return_type} 返回类型
* @throws
*/
</template>
<template
autoinsert="true"
context="overridecomment_context"
deleted="false"
description="Comment for overriding methods"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.overridecomment"
name="overridecomment">
/* (非 Javadoc)
* <p>Title: ${enclosing_method}</p>
* <p>Description: </p>
* ${tags}
* ${see_to_overridden}
*/
</template>
<template
autoinsert="true"
context="delegatecomment_context"
deleted="false"
description="Comment for delegate methods"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment"
name="delegatecomment">
/**
* ${tags}
* ${see_to_target}
*/
</template>
<template
autoinsert="false"
context="gettercomment_context"
deleted="false"
description="Comment for getter method"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.gettercomment"
name="gettercomment">
/**
* @return ${bare_field_name}
*/
</template>
<template
autoinsert="true"
context="settercomment_context"
deleted="false"
description="Comment for setter method"
enabled="true"
id="org.eclipse.jdt.ui.text.codetemplates.settercomment"
name="settercomment">
/**
* @param paramtheparamthe{bare_field_name} to set
*/
</template>
</templates>
(2)背景色调试
Windows->Preferences->General->Editors->Text Editors->根据喜好设置相关属性
(色调:85;饱和度:123;亮度:205护眼色:199,237,204)
(3)编码集设置
为了解决在开发过程中经常出现的乱码问题,常常需要处理编码集问题,可以修改全局设置,以设置所有新建工程的默认编码集,也可以修改单个工程对应的编码集。
针对单个工程设置编码集
右键点击指定的工程,选择Properties
全局设置修改指定编码集
Windows->Preferences->General->WorkSpace->Text file encoding 修改指定的编码集
Windows->Preference-> JSP File/CSS File/HTML File->修改指定的编码集
参考设置链接:
https://blog.csdn.net/lanmuhhh2015/article/details/79366872
https://www.cnblogs.com/bluestorm/archive/2012/09/20/2695567.html
修改workspace编码
windows->preferences->gengral->workspace,在“Text file encoding”编码选择other->UTF-8,点击应用
修改Content Types编码
windows->preferences->gengral->conten Types->Text
Default enconding–>UTF-8–>Update(将里面所有的文件设置为UTF-8编码)
点击Apply and Close
修改web下文件的编码
windows->preferences->web->(css files、html files、javaServer face、jsp files)
在enconding设置为ISO 10646/Unicode(UTF-8)
修改项目的编码
选择项目右键点击Properties,点击Resource修改项目编码为UTF-8
(4)tomcat引入
https://blog.csdn.net/j1234jj/article/details/88635312
常见问题
(1)eclipse中导入Web项目时jsp文件出错
原因是由于JDK版本的不同导致的,右键点击项目Build Path-->Configure Build Path,出现以下界面
移除出错的jre,点击Add Library,选择JRE System Library
选择默认工作路径下的jre即可
添加完成后,原有的错误得以解决,重新刷新项目即可
(2)eclipse导入servlet包错误
解决导入Servlet包不正确的问题
1.右击项目名称,选择Properties 显示如下界面:
2.选择Libraries选项对应的界面,点击Add External JARs,显示界面如下:
3.选择安装的Tomcat文件目录下的servlet-api.jar文件进行添加即可
4.完成上述操作,可看到对应的import导入包错误提示消失
(3)eclipse删除jdk或更换jdk版本项目全部爆红出错的解决方法(eclipse导入外部项目飘红)
开发环境中应用了多个版本的JDK 或JRE导致的。Eclipse会按照最初的开发环境默认选择对应的Jre。如Eclipse上有jdk1.4开发的环境工程,当在引入高版本jdk1.6开发的工程时则出现问题
【1】找到eclipse的安装路径,打开对应的eclipse.ini文件,修改相应的JDK路径为指定路径
【2】重启eclipse随后进行配置,window->perferences->Compiler:调整对应的JDK路径随后点击apply应用
【3】编辑JRE环境配置,随后选中飘红加载出错的项目右键点击属性,选择Libraries选项卡进行javaSE环境配置。随后重新加载即可
(4)启动项目报错:org.apache.catalina.LifecycleException: Failed to start component
原因分析:环境异常重启,项目java进程未关闭,原项目的端口依旧在占用。一般为8080端口被占用
解决方案:【1】打开任务管理器杀死占用端口号的java进程后重启;【2】借助cmd指令杀死指定进程(netstst -ano:查看所有端口和PID、tasklist | findstr "8080":查找指定进程;taskkill /f /t /im java.exe:杀死指定进程)
(5)SQLSERVER数据库连接驱动SQLJDBC4.JAR在MAVEN中报错
原因分析:maven加载jar失败导致,由于SqlServer的未提供maven版本问题,java连接SqlServer的jar(sqljdbc4.jar)在maven的中央仓库下载不到导致maven项目报错。
解决方案:
【1】直接从官网下载SQLJDBC4.JAR放在任意目录(如果tomcat发布则放在对应tomcat安装路径的lib文件夹下便于查找)
【2】maven装载jar到指定仓库:CMD打开命令窗口,执行如下命令或者将JAR包复制到 复制到MAVEN安装目录的LIB下再执行如下命令,其实效果是一样的,maven安装jar包命令(安装到本地仓库):安装成功后会出现BUILD SUCCESS。
mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.2
# 命令解释:mvn install:install-file -Dfile="jar包的绝对路径" -Dpackaging="文件打包方式" -DgroupId=groupid名 -DartifactId=artifactId名 -Dversion=jar版本 (artifactId名对应之后[maven配置](https://so.csdn.net/so/search?q=maven配置&spm=1001.2101.3001.7020)的依赖名)
【3】检查安装是否成功,可以直接到本地仓库进行查验,随后在pom.xml进行引用。重新刷新项目确认jar正常装载(如果说还是没有正常构建则重启idea刷新项目后再尝试)
(6)运行web项目提示异常:non-compatible bean definition of same name and class【com.xxx.xxx.XXX】
报错提示non-compatible bean definition of same name and class【com.xxx.xxx.XXX】但在代码中并未发现指定的bean有冲突
原因一:之前创建了一个接口的实现类,后面编写代码时挪到其他位置,但是重新打包的时候,并没有进行clean项目,导致打出来的war里面的class存在了两个。
原因二:本身框架中已封装好该指定的实体类,因此另外进行声明会造成冲突,但是直接查询却又查不到该实体类
解决一:maven clean一下, project clean一下。 重新打包,问题解决(eclipse中有project clean选项,idea中使用Invalidate Caches/Restart选项进行清理)
解决二:将该冲突的类备份后从项目中删除,尝试直接调用冲突的类名
(7)XXX could not be redeployed because it could not be completely removed in the undeployment phase.
使用MyEclipse都会从新部署项目,点击Redeploy弹出一个错误:XXX could not be redeployed because it could not be completely removed in the undeployment phase. the most common cuase of this problem is attempting to redeploy while the server is running,which has locked one or more files.
原因:
【1】缺少jar包(以前的jar文件不存在了,但是项目信息中还有,即项目的.classpath文件中还有不存在的jar文件引用)
【2】jar包重复(引入了2次不同位置的相同的jar包)
解决方案:
【1】右键点项目名称-->Build Path-->Configure Build Path,把项目中缺少的jar包添加上,点"Add External Jars"
【2】右键点项目名称-->Build Path-->Configure Build Path,把项目中重复的jar包Remove掉
(8)idea使用jsp,jsp中使用jstl报错:org.apache.jsp.index_jsp
查找不到指定类,说明可能引用jar出错,排查本地idea项目中是否正常引用,排查tomcat发布应用是否引用正常(WEB-INF/lib)
(9)tomcat项目文件上传路径问题
在servlet中使用 request.getSession().getServletContext().getRealPath("upload/" ); 获取不到 tomcat 服务器目录,可以通过打印日志信息发现获取到的并不是运行时的工程存放目录,得到的反而是工作空间的项目存放路径,可以通过调整配置解决
清理原有的Server重新引入,修改默认配置,在配置tomcat的时候选择引用到tomcat安装目录下,随后重启项目运行查看路径是否正确调整
【2】IDEA工具使用
a.常见插件引入
b.常见配置
(1)模板注释修改
Add Template group(‘customConfig’)->Add Live Template()
Wrong target ‘xxx’ less … (ctrl+F1):解决方式:alt+enter:add to custom tags;或者修改配置,去除警告
(2)修改工程目录显示结构
找到齿轮状按钮->点击->Flatten Packages(收缩目录结构)、Compact Empty Middle Packages(Hide Empty Middle Packages隐藏空的包目录)
具体操作看下图:
c.常见问题处理
(1)idea启动tomcat项目的日志跟踪
在用idea启动了tomcat服务器后,在项目运行期间会有日志文件,该如何跟踪这个日志文件?
首先说明一点:在网上下载的tomcat包里面有一个logs文件,这个logs文件是记录自己电脑终端启动(startup.bat)tomcat时生成的文件,而不是使用idea启动tomcat生成的日志。可以从另一个方面理解,用idea可以启动多个tomcat,每一个tomcat都有对应的日志,但下载的tomcat只有一个,所以,idea启动的tomcat日志肯定不会放在下载的tomcat中的logs文件中。这个运行时日志可以通过tomcat启动信息进行跟踪
根据该路径进行跟踪,可以看到相应的日志文件,其中catalina.xxx.log为服务器端的java程序运行的控制台信息;localhost.xxx.log为ServletContext对象的log方法记录的日志信息;localhost_access_log.xxx.txt则为访问日志
配置说明
常见配置相关:
本地SVN创建:
注意配置文件修改:conf下的svnserve.conf、passwd配置(注释解除前面不要存在空格,空格会导致checkout失败然后配置文件报错)
启动成功不要关闭窗口
参考链接:https://blog.csdn.net/Simon798/article/details/105077145/
JDK配置:
应实际项目需求分析:
不同项目维护匹配的JDK版本不同,可以指定多个JDK随后切换JAVA_HOME
如果是默认使用低版本的JDK,则eclipse打开的时候会检测当前系统默认JDK配置是否满足eclipse配置要求,需要额外进行配置使得程序正常运行(配置eclipse.ini文件指定JDK,需要与eclipse最低要求匹配):
在--launcher.appendVmargs下面加上
-vm
JDK安装路径:xxxx\javaw.ece
随后重启测试,相应eclipse中也要切换指定的JDK运行环境,或者直接用默认的jdk环境
参考链接:https://jingyan.baidu.com/article/fa4125aced66cc28ac7092da.html
eclipse:本地工作空间 项目存放路径
本地工作空间针对工作空间配置相关
项目存放路径可以放在本地工作空间之外,但不能重复引入重名项目
离线本地代码管理: 笔记整理
SVN:如果两台主机相互之间可以ping通,可以在另一台主机处创建版本库进行管理相互之间调用
安装SNV工具类:TortoiseSVN 、中文包(安装的时候勾选中文包命令行)
SNV操作了解:
先add 、后commit
如果操作导致项目锁住了 clean up
事务管理控制:
@Transactional注解的失效场景
https://zhuanlan.zhihu.com/p/145669970
配置说明
关于eclipse部署的项目用tomcat直接跑出现:startup failed due to previous errors
tomcat升级到8.5.56、原定8.5.53,项目启动报错
JDK版本问题???
参考链接:https://blog.csdn.net/caidimin/article/details/65436873
直接说问题原因吧! 是由于jdk版本不同导致。
问题回顾:
通过eclipse发布一个项目到tomcat默认的运行目录下,然后通过tomcat直接跑,就出现这类问题。
原因:
我的电脑同时使用两个jdk版本,默认1.7,后端开发工具使用的是1.8,,由于项目启动时有加载类需要jdk1.8的包,1.7不支持。所以导致项目在eclipse直接能够跑,而在外面的tomcat跑是就出现startup failed due to previous errors的错误.
但是这样的提示信息问题还是表达比较含糊,下开始重新理思绪,通过查看日志来分析原因。
为了调试,要获得更详细的日志。可以在WEB-INF/classes目录下新建一个文件叫logging.properties
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
Handler specific properties.
Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter Tomcat的日志目录下会生成error-debug.***.log的文件。里面会提供较详细提示信息。我的反馈如下:
...Unsupported major.minor version 52.0 (unable to load class com.sdmc.controller.IndexController)...
版本不支持上面类的运行,但是编译时使用的是JDK1.8的包.所以eclipse上不会报错。
这种问题奇葩吧,好了废话不多说,感慨不大堆。总结是出现类似问题从日志开始。
如果早养成这样的习惯也不会让我耗了这么久,分分钟搞定
相关推荐:
http://blog.sina.com.cn/s/blog_826ca0d80102wl3f.html
http://blog.csdn.net/mcpang/article/details/5468386
tomcat版本升级:
端口号配置:conf的server.xml文件配置
tomcat指定JDK运行环境:
在tomcat安装包的bin目录下的catalina.sh中指定JDK版本(如果是替换文件则需要注意授予文件相应的访问权限,否则启动报错)JAVA_HOME、JRE_HOME
查看配置文件内容(通过查看日志)