1.eclipse启动不了. 提示 "Required Java version:1.4.1 Available 1.3.1_01"
解决办法:
有可能是装了oracle或其它不同版本的jdk,出现版本不匹配,这时可以在环境变量中设置一下,
在系统在环境变量path里将oracle路径相关的jdk和jre往后移动。。。移到自己系统的jdk,jre 后面,重启机器即可
2.eclipse启动时出现提示查看log文件,打开详细的日志内容如下:(只贴一点点)
!SESSION 十一月 22, 2005 13:56:33.546 ---------------------------------------------
eclipse.buildId=I200406251208
java.version=1.3.1_01
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
!ENTRY org.eclipse.osgi 十一月 22, 2005 13:56:33.546
!MESSAGE Error registering XML parser services.
!STACK 0
java.lang.ClassNotFoundException: javax.xml.parsers.SAXParserFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
解决办法:
这样的问题主要是因为eclipse与jdk之间的绑定有问题,
具体方法如下,在eclipse的快捷方式里加上 -vm "c:/jdsk1.4.0.1/bin/javaw.exe"这样就可以了。
3.关于jdk,tomcat及eclipse的安装可以在网上查一下,文档很多
4.关于JSP乱码的问题
在Java中乱码问题一直是我们这些初学者比较烦的话题,但从网上查询我将其汇总成四种情况(都转自网上)
(1) jsp 的 contentType 的设置 <%@page contentType="text/html;charset=GB2312"%>
(2)一个就是某些包中的类对中文没有良好的支持。就比如说我刚刚用的上传的一个包,这个包中的类对中文支持就是不好,显示在网页中的中文全部 是???????。后来当我从这个包的类里取出的数据都用了 new String(file_item.getName().getBytes("iso8859-1"),"GBK"))就解决了问题。
如:
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="org.apache.commons.fileupload.DiskFileUpload, org.apache.commons.fileupload.FileItem" %>
<%
if("POST".equalsIgnoreCase(request.getMethod()) && request.getContentType().startsWith("multipart/form-data")) {
DiskFileUpload upload = new DiskFileUpload();
java.util.List files = upload.parseRequest(request);//取得表单
FileItem file_item;
for(int i=0; i< files.size(); i++) {//循环得出表单中的元素,这里为了看是否id有值可取出dbms_phsgame
file_item = (FileItem)files.get(i);
//如果有id元素,就从数据库中取出dbms_phsgame
if("file".equalsIgnoreCase(file_item.getFieldName())) {
out.println(new String(file_item.getName().getBytes("iso8859-1"),"GBK"));
}
}
}
%>
<html>
<body>
<form name="form1" enctype="multipart/form-data" method="post" action="">
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>
(3)
3.数据库数据本身就是乱码。
这里推荐一个办法---就是getBytes()的方法
// 用于读数据库时由 iso8859-1 变为 GBKpublic String GBKConverter(String s_string){
try{
String des = new String(s_string.getBytes("iso8859-1"),"GBK");
return des;
}
catch(Exception ex){
String des="";
return des;
}
}
//用于处理页内生成的中文数据在写入数据库时的处理,由GBK变为iso8859-1
public String ISOConverter(String s_string){
try{
String des = new String(s_string.getBytes("GBK"),"iso8859-1");
return des;
}
catch(Exception ex){
String des = "";
return des
}
}
BTW:
<%@ page contentType="text/html;charset=gb2312" %>
一定有, 而且要在文件首行(不能在include文件中)
还有, 如果不能正确解析表单内容, 加这一句:
request.setCharacterEncoding("gb2312");
最后的解决办法:
String unitName =new String(request.getParameter("unitName").getBytes("ISO8859-1"));
(4)是我昨天遇到的问题,在Jsp界面中如果不从资源文件中读取信息,写中文正常但利用标签<bean: message...../> 读取则显示乱码,在CSDN中发了贴子请教了一下,有位朋友说需要用native2ascii来将properties进行一下转换即可,我查了一下native2ascii的相关信息,它的格式如下:
native2ascii -[options] [inputfile [outputfile]]
这个命令安装了jdk后便会有的,参数说明:
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
最佳实践:首先将JDK的bin目录加入系统变量path。在盘下建立一个test目录,在test目录里建立一个zh.txt文件,文件内容为:“熔岩”,打开“命令行提示符”,并进入C:/test目录下。下面就可以按照说明一步一步来操作,注意观察其中编码的变化。
A:将zh.txt转换为Unicode编码,输出文件到u.txt
native2ascii zh.txt u.txt
打开u.txt,内容为“/u7194/u5ca
9”
。
B:将zh.txt转换为Unicode编码,输出到控制台
C:/test>native2ascii zh.txt
/u7194/u5ca9
可以看到,控制台输出了“/u7194/u5ca
9”
。
C:将zh.txt转换为ISO8859-1编码,输出文件到i.txt
native2ascii -encoding ISO8859-1 zh.txt i.txt
打开i.txt文件,内容为“/u
00c
8/u00db/u00d1/u00d
2”
。
D:将u.txt转换为本地编码,输出到文件u_nv.txt
native2ascii -reverse u.txt u_nv.txt
打开u_nv.txt文件,内容为“熔岩”。
E:将u.txt转换为本地编码,输出到控制台
C:/test>native2ascii -reverse u.txt
熔岩
可以看到,控制台输出了“熔岩”。
F:将i.txt转换为本地编码,输出到i_nv.txt
native2ascii -reverse i.txt i_nv.txt
打开i_nv.txt文件,内容为“/u
00c
8/u00db/u00d1/u00d
2”
。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。。
G:将i.txt转换为GBK编码,输出到i_gbk.txt
native2ascii -reverse -encoding GBK i.txt i_gbk.txt
打开i_gbk.txt文件,内容为“/u
00c
8/u00db/u00d1/u00d
2”
。发现转码前后完全一样的。也就是说,等于没有转,或者说思想糊涂,对命名没有理解。
H:将u_nv.txt转码到本地编码GBK,输出到控制台
C:/test>native2ascii -reverse -encoding ISO8859-1 i.txt
熔岩
从这个结果看,目标达到到了,编码i.txt为ISO8859-1,转为本地编码后内容为“熔岩”。从这里应该意识到,native2ascii -reverse命令中-encoding指定的编码为源文件的编码格式。而在native2ascii 命令中-encoding指定的编码为(生成的)目标文件的编码格式。这一点非常的重要!切记!!
继续探索,新建文件 12a .txt,内容“12axyz”。看看纯字母数字的编码又如何。
I:将纯字母数字的文本文件
12a
.txt转换为Unicode编码
native2ascii
12a
.txt
12a
_nv.txt
打开
12a
_nv.txt文件,内容为“12axyz”。
继续测试,转为ISO8859-1编码看看
C:/test>native2ascii -encoding ISO8859-1
12a
.txt
12axyz
结果还是没有转码。
从结果可以得出结论:对于纯数字和字母的文本类型件,转码前后的内容是一样的。
总结:native2ascii是一个非常的好转码工具,并且转码是可逆的!而其真正的含义并非本地编码——>转码为ASCII码,而是一个通用的文本文件编码转换工具。在做编码转换的时候有两类指定编码的情形,分别指输出文件编码和输入文件编码,具体可以看看最佳实践部分。
实际应用中:
比如可以这样利用native2ascii:
native2ascii -encoding gbk temp.properties application_zh_CN.properties
这里将根据一个临时文件temp.properties输出了application_zh_CN.properties,然后把application_zh_CN.properties中的文件内容替换这个临时文件的内容就可以了。
值得注意是:编辑文件时最后用editplus或文件工具,而不要用eclipse,因为我在eclipse编辑完后,用native2ascii转换后仍不正确,但用editplus编辑后再转换便正常了.
5.java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
用Myeclipse开发struts时,配置struts- config中的data-sources,出现java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
struts-config.xml文件中的data-sources是这样配置的
<data-sources>
<data-source key="mysql" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="autoCommit" value="true"/>
<set-property property="driverClassName" value="com.mysql.jdbc.Driver"/>
<set-property property="url" value="jdbc:mysql://localhost:3306/javajavajava"/>
<set-property property="maxCount" value="10"/>
<set-property property="minCount" value="1"/>
<set-property property="username" value="root"/>
<set-property property="password" value="admin"/>
</data-source>
</data-sources>
启动Tomcat,结果出现下面的错误:
信息: Starting Servlet Engine: Apache Tomcat/6.0.13
2007-12-17 19:31:06 org.apache.struts.action.ActionServlet initModuleDataSources
严重: Initializing application data source mysql
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117)
信息: Marking servlet action as unavailable
2007-12-17 19:31:06 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /huqianhao threw load() exception
javax.servlet.UnavailableException: Initializing application data source mysql
at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
2007-12-17 19:31:06 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2007-12-17 19:31:07 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /
0.0.0
.0:8009
2007-12-17 19:31:07 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/63 config=null
2007-12-17 19:31:07 org.apache.catalina.startup.Catalina start
信息: Server startup in 2848 ms
解决办法:
一看就知道是没有找到文件,但不知道是少了哪个jar包。网上搜了一下,只要把commons-pool.jar、commons-dbcp- 1.2.2 .jar和commons-collections-3.2.jar三个jar包加入classpath中就没问题拉!有人说只要前两个,我试了下好象不行哦。这几个jar包都可以在myeclipse安装文件下可以找到。只是版本号可能不一样而已Ctrl+F查找一下就OK拉!