Java开发过程中自己遇到的各种问题汇总
开篇:这篇文章,全权作为自己的一个问题和错误的笔记录,记录着平时开发过程中,遇到的一些问题,以及相应的解决方法,直接就直白的放在这里了,给自己忘记的时候看看,做个小总结,也给大家借鉴!
- 开发常见问题
1、项目编码方式乱码解决
a、MyEclipse:右键单击项目名称->Properties->Resource->Text file encoding,选择项目的编码方式。
b、Window->Preferences->General->Content Types->比如选中右边的JSP,窗口下面则出现Default encoding,在右边修改该文件默认的编码方式即可
环境
2、启动Tomcat出现“Bad version number in .class file (unable to load class XXX)”解决
MyEclipse8.6+ Tomcat 6.0.18
问题:启动Tomcat出现“Bad version number in .class file (unable to load class XXX)”
起因:原因是Tomcat使用的jdk版本与class文件编译时使用的jdk版本不一致引起的。
:解决办法
a. 首先确认Tomcat使用JDK版本,默认会使用环境变量里配置的path。如果不正确,重新配置环境变量;如果没使用默认的,检查当前Tomcat使用JDK版本:Window—–>Preferences—–>MyEclipse—–>Server—–>Tomcat6(具体视机器配置)—–>JDK;
b.确认MyEclipse工程Java build path中jdk版本设置;
c. 确认工程编译使用的JDK版本,Window—–>Preferences—–>Java—–>Compiler ,这个是关键的一步;
c.将三个版本修改一致后,重新编译,重启Tomcat,问题解决。
3、/useBean.jsp(39,11) According to TLD, tag jsp:getProperty must be empty, but is not
解决:一般是javaBean标签编写错误错误
例如: 少了一个 / 斜杠
4、java.lang.NoClassDefFoundError: org/jaxen/JaxenException
解决:导入dom4j包 没有对应的jaxen.jar包,把这个jar包放到lib下即可,下载地址 http://jaxen.org/releases.html IDE常见设置以及问题
1、MyEclipse console没有显示的解决方法
a、进window菜单->show view->console
b、window菜单->preferences->打开左边的run/debug->console 在两个show when…前面打勾,如果已经是被选中的,就去掉选中,确定。然后再打开这里,再把那两个show…选中,确定,重启MyEclipse。或者,直接将Console中的“Open Console”切换成“Java Stack Trace Console”就好!2、myeclipse6.5代码提示配置及Alt提示键无作用情况?
一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提 示功能一样强大。
先举个简单的例子说明问题所在,例如在Eclipse ,MyEclipse代码里面,打个foreach,switch等 这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Visual Studio 里面是得到非常友好的代码提示的。实际上,Eclipse ,MyEclipse代码里面的代码提示功能默认的一般 是点“.”,一般是有了点“.”,才会有代码提示。
原理:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.” 改成“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提 示功能了。(具体后面有说,放心)增强Eclipse ,MyEclipse 的代码提示功能,具体怎么样来配置?下面开始说步骤(注意本人用的 MyEclipse 6.0.1做讲解):
a. 打开MyEclipse 6.0.1,然后“window”→“Preferences”
b. 选择“java”,展开,“Editor”,选择“Content Assist”。
c. 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项。其实就是指触发代码提示的就是“.”这个符号.
d. “Auto Activation triggers for java”这个选项,在“.”后加abc字母,方便后面的查找 修改。然后“apply”,点击“OK”。
e. 然后,“File”→“Export”,在弹出的窗口中选择“Perferences”,点击“下一步”。
f. 选择导出文件路径,本人导出到桌面,输入“test”作为文件名,点击“保存”。
g. 在桌面找到刚在保存的文件“test.epf”,右键选择“用记事本打开”。
h. 可以看到很多配置MyEclipse 6.0.1的信息
i. 按“ctrl + F”快捷键,输入“.abc”,点击“查找下一个”。
j. 查找到“.abc”的配置信息.
k. 把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,”,保存,关闭“test.epf”。
l. 回到MyEclipse 6.0.1界面,“File”→“Import”,在弹出的窗口中选择“Perferences”,点击 “下一步”,选择刚在已经修改的“test.epf”文件,点击“打开”,点击“Finish”。该步骤和上面 的导出步骤类似。
m. 最后当然是进行代码测试了。随便新建一个工程,新建一个类。在代码输入switch,foreach等进行 测试。你立即会发现,果然出了提示,而且无论是敲哪个字母都会有很多相关的提示了,很流畅,很方便。
总结:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.”改成 “.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提示功 能了。 顺便说一下,修改类名,接口名等以不同颜色高亮的,可以这样配置在“java”→“enditor”→ “syntac”,右边展开“java”→“classes”,勾上“Enable”这个选项,选择自己喜欢的颜色即可。 当然还有其他相关的颜色配置。具体就不说啦。其实,在“Preferences”这个东西,有很多可以配置的 东西,使得MyEclipse 优化的,具体的就要各个人根据自己个人喜好去配置了。
6.5版本用 ALT+/ 不起作用 解决办法
我用的myeclipse5.5 对于System.out.println(); 这个东西我都是syso然后ALT+/会出现System.out.println();,MyEclipse6.5却无任何提示
解决方案:选择MyEclipse6.5菜单栏中的 Window - Preferences –>General –> Keys 内找:
a、把Content Assist的快捷键由ctrl+space改成alt+/。
b、把word completion的快捷键由alt+/设置成其他的不冲突的快捷键即可。
c、点击Ok就可以了。
3、Myeclipse安装问题汇总
1、Myeclipse6.5安装提示 a error occurred. See the log file
日志内容:
!SESSION 2008-12-05 22:30:51.968 ———————————————–
eclipse.buildId=M20070921-1145
java.version=1.5.0_11
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_CN
Command-line arguments: -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.equinox.app 2008-12-05 22:31:00.125
!MESSAGE Product com.genuitec.myeclipse.product.ide could not be found.
!ENTRY org.eclipse.osgi 4 0 2008-12-05 22:31:00.187
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: No application id has been found.
at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:236)
at org.eclipse.equinox.internal.app.EclipseAppContainer.start(EclipseAppContainer.java:98)
at org.eclipse.equinox.internal.app.Activator.addingService(Activator.java:112)
at org.osgi.util.tracker.ServiceTracker
Tracked.trackAdding(ServiceTracker.java:1064)atorg.osgi.util.tracker.ServiceTracker
Tracked.trackInitialServices(ServiceTracker.java:926)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:330)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:274)
at org.eclipse.equinox.internal.app.Activator.start(Activator.java:54)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl
2.run(BundleContextImpl.java:999)atjava.security.AccessController.doPrivileged(NativeMethod)atorg.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)atorg.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)atorg.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)atorg.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)atorg.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)atorg.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)atorg.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:417)atorg.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)atorg.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)atorg.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)atorg.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)atorg.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)atorg.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)atorg.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)atjava.lang.ClassLoader.loadClass(UnknownSource)atjava.lang.ClassLoader.loadClassInternal(UnknownSource)atorg.eclipse.core.internal.runtime.PlatformActivator.startAppContainer(PlatformActivator.java:47)atorg.eclipse.core.internal.runtime.PlatformActivator.start(PlatformActivator.java:32)atorg.eclipse.osgi.framework.internal.core.BundleContextImpl
2.run(BundleContextImpl.java:999)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:350)
at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1118)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:634)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:508)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:282)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:468)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:297)
!ENTRY org.eclipse.osgi 2 0 2008-12-05 22:31:00.203
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2008-12-05 22:31:00.203
!MESSAGE Bundle update@plugins/org.eclipse.jdt.apt.pluggable.core_1.0.1.R33x_v20070831-0435.jar [69] was not resolved.
!SUBENTRY 2 org.eclipse.jdt.apt.pluggable.core 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.tool_0.0.0.
!SUBENTRY 2 org.eclipse.jdt.apt.pluggable.core 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.apt.dispatch_0.0.0.
!SUBENTRY 2 org.eclipse.jdt.apt.pluggable.core 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.apt.model_0.0.0.
!SUBENTRY 2 org.eclipse.jdt.apt.pluggable.core 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.apt.util_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2008-12-05 22:31:00.203
!MESSAGE Bundle update@plugins/org.eclipse.jdt.compiler.apt_1.0.1.R33x_v20070831-0435.jar [77] was not resolved.
!SUBENTRY 2 org.eclipse.jdt.compiler.apt 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.tool_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2008-12-05 22:31:00.203
!MESSAGE Bundle update@plugins/org.eclipse.jdt.compiler.tool_1.0.1.v_780_R33x.jar [81] was not resolved.
!SUBENTRY 2 org.eclipse.jdt.compiler.tool 2 0 2008-12-05 22:31:00.203
!MESSAGE Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.6
分析解决:首先,安装目录里不能出现中文,出现中文就挂了,MyEclipse不认识,建立个英文的目录再进行安装,他的父级目录和爷级目录都不能有中文。比如e:\我的\my..这样就不行 。
4、MyEclipse编码设置
对于干接触MyEclipse的不知道如何设置编码,MyEclipse在不设置编码的情况下是默认与操作系统编码一样,即GBK,如何设置呢?
方法一:打开MyEclipse,windows—->Preferences打开”首选项”对话框。
左侧导航,导航中找到general—->Workspace。
右侧窗口Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8.点击“ok”保存。
方法二:打开MyEclipse,windows—->Preferences打开”首选项”对话框。
左侧导航,导航到general—->Content Types,
右侧Context Types窗口,点开Text树中每一颗子项,并在中输入”UTF-8”,点“update ”更新。其它的如:Java properties File、javascript等已经由Eclipse缺省指定。若开发中需要, 改变编码格式。