当前位置: 首页 > news >正文

Eclipse初次java开发问题总结-1

项目需要,使用Eclipse初次java开发,过程中遇到很多问题,有的问题可能很低级,这里做个简单的总结,怕忘记:

1、Dyanamic Web Project工程引用普通java工程的类,可能会出现NoClassDefFoundError问题

如图一个简单的java工程和一个servlet示例程序,servlet中调用了Test工程中Test类的静态方法test():

很显然TestDW工程需要某种方式“引用”Test工程,刚开始开始我的方式是:右击TestDW(Dynamic Web Project)工程->选择Buid Path->Projects->添加Test工程:

这种方式我之前尝试了在普通java工程之间进行引用是没问题的,但是在Dynamic Web工程就会出现问题,虽然编译时候不会有错,但一运行就会报java.lang.NoClassDefFoundError的异常:

解决方式

右击TestDW(Dynamic Web Project)工程->选择Properties->Deployment Assembly->Add->Project->选择Test工程。

 

2、Server Runtime Environment 配置问题

需要在Eclipse中调试或运行Servlet程序需要新建Server,但是遇到了无法新建的问题,这是因为Server Runtime Environment没有配置的问题。

点击Window->Preferences->Server->Runtime Environment->Add->根据本机情况选择tomcat安装路径即可:

其实这个配置不对的话,也无法使用HttpServlet相关的类的。

 

3、文本编辑中文乱码问题:

右击工程->Properties->Text file encoding->Other->UTF-8。

 

4、智能提示

从VS切换到Eclipse还是非常的不习惯,最大的就是智能提示,Eclipse默认的设置对新手挺不方便,不过简单设置下还是很不错的:

Window->Properties->Java->Editor->Content Assist,将Auto activation delay设置短一点比如20毫秒,将Auto activation triggers for java从a-zA-Z和.都填上:

另外在使用的过程中慢慢发现的一些快捷键也很实用:

Ctrl+Shift+f 自动美化代码格式

Ctrl+Shift+O 自动导入需要的包/删除不多余引入的包等等。

说到Ctrl+Shift+f还有一个问题是这个热键跟搜狗输入法的“简繁体快捷键”热键冲突:

 

5、引用第三方类库的问题

可以在Buid Path中选择Add External JARs但这一引用的jar包使用的是绝对路径,项目拷到别人的电脑上可能就有问题,我现在使用的方式是在工程下建一个lib目录将需要用到的第三方jar包到放进去,然后在Buid Path中选择Add JARs添加工程目录下的jar包,这样使用的就是相对路径。

另外我发现好像Dynamic Web工程需要的第三方jar包需要放到WebContent Web-INF下的lib目录下。

 

6、找不到源码

调试或f3的时候提示找不到源码: 

很简单点击Attach Source 添加Jdk安装目录下的src.zip就可以了。

 

7、xstream序列化下划线问题

项目中使用xstream进行序列化操作,但使用过程中同事发现一个奇怪的问题,就是反序列化的某个字段中带有一个下划线的话(比如biz_result),但实际上返回的序列化结果为biz__result,多了一个下划线,解决这个问题如下使用xstream:

@SuppressWarnings("deprecation")
XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("__", "_");
@SuppressWarnings("deprecation")
HierarchicalStreamDriver hierarchicalStreamDriver = new XppDriver(replacer);

XStream xStream = new XStream(hierarchicalStreamDriver);

 

更多xstream的用法参看官方文档:http://xstream.codehaus.org/alias-tutorial.html

 

8、代码同步的问题

开发中遇到另外一个头痛的问题就是代码同步的问题,因为之前一直在用SVN,用C#开发的工程代码同步比较简单,VS处理很多依赖关系,不需要我们操心。一开始我将整个java的workspace上传到SVN,然后其他同事check下来后各种问题,我猜测是因为我把一些工程相互之间依赖关系的文件也上传上去了(比如.classpath、.settings等,具体这些文件干什么的后面慢慢研究),最后没办法只能每次只提交java文件,但是这样文件一多,包层次一多就非常的头痛。VS里有SVN客户端插件,我想eclipse中肯定也有,结果网上一搜果然不出所料,就是subclipse。

eclipse中以插件的形式安装subeclipse非常简单:

Help->Install New Software,直接输入subeclipse的下载地址安装就行了。

安装后就可以在Window->Preferences->Team中看到SVN的相关配置了:

如果之前workspace中的代码就是从SVN上check下来的话,那么右击工程->Team->Share Project->SVN->……后就可以在Team中看到相关的版本控制操作了:

工程Share后跟在VS中一样也有各种形状的图标表示不同的意思,比如黑底白色的星状代表代码没有同步到SVN上跟VS中的红色小方块一个意思:

 

 

8、split特殊字符的问题

1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");

相关文章:

  • android-有效解决加载大图片时内存溢出的问题
  • windows环境下PHP 开发环境的选择、建立及使用
  • 001 about hello world
  • 用string.Join与ListT或者与string数组转换为字符串
  • 使用duplicate创建dataguard
  • 刚开通了,说上几句
  • 骑士人才系统后台用户名密码重设工具源码
  • 通过 RemoteApp和桌面连接 创建RDP文件--更方便访问RDS虚拟桌面
  • 产品需求文档的10步
  • 如何在数据库中存储一棵树
  • 我为什么不建议使用OpenDNS和Google Public DNS
  • Flex开发的一些经验总结——本地化(多语言)实现
  • vsphere 5.1 性能最佳实践。
  • CSC时无法找到C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
  • 图解XenServer的SR,VDI,VBD之间的关系
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 07.Android之多媒体问题
  • ES学习笔记(12)--Symbol
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PAT A1120
  • python学习笔记 - ThreadLocal
  • Windows Containers 大冒险: 容器网络
  • 使用权重正则化较少模型过拟合
  • 王永庆:技术创新改变教育未来
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 硬币翻转问题,区间操作
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • #{} 和 ${}区别
  • #Lua:Lua调用C++生成的DLL库
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (7)STL算法之交换赋值
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (libusb) usb口自动刷新
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • @Documented注解的作用
  • @Mapper作用
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @test注解_Spring 自定义注解你了解过吗?
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [LeeCode]—Wildcard Matching 通配符匹配问题
  • [LeetCode 127] - 单词梯(Word Ladder)
  • [NOIP 2015] Day.1 T1 神奇的幻方 [模拟]
  • [OPEN SQL] 修改数据
  • [POJ2446] Chessboard(二分图最大匹配-匈牙利算法)
  • [QT]加快qt编译:设置默认多核编译qt
  • [sd_scripts]之train
  • [SystemC]SystemC Hierarchical Channels