thinking

one platform thousands thinking

Eclipse+Tomcat调试时的一些错误笔记

Eclipse+Tomcat调试时的一些错误笔记

No.1:

今天在测试Eclipse+Tomcat写的应用程序的时候出现了这样警告:


2008-10-11 21:33:55 org.apache.tomcat.util.digester.SetPropertiesRule begin

警告 : [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TestTomcat6.0.16' did not find a matching property.

2008-10-11 21:33:55 org.apache.catalina.core.AprLifecycleListener init

信息 : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:"study tools"Java"jdk1.5.0_06"bin;.;C:"WINDOWS"system32;C:"WINDOWS;D:/study tools/Java/jdk1.5.0_06/bin/../jre/bin/client;D:/study tools/Java/jdk1.5.0_06/bin/../jre/bin;D:"study tools"Borland"Delphi7"Bin;D:"study tools"Borland"Delphi7"Projects"Bpl";D:"study tools"Java"jdk1.5.0_06"bin;C:"WINDOWS"system32;C:"WINDOWS;C:"WINDOWS"System32"Wbem;D:"study tools"MySQL"MySQL Server 5.0"bin;C:"Program Files"Microsoft SQL Server"80"Tools"BINN


出现SetPropertiesRule 警告的原因是因为Tomcat 在server.xml 的Context 节点中不支持source 属性: <Context docBase="…" path="/…" source="org.eclipse.jst.j2ee.server:…"/>

解决方法是在Servers 视图里双击创建的server ,然后在其server 的配置界面中选中"Publish module contexts to separate XML files" 选项。如下图:

不过,不知道这样做的具体意义是什么,因为即使出现这个Warning,程序也正常执行。



NO2:


还有一个错误信息是:

信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: 


这个具体信息参考:Apache Tomcat Native library

解决方法是:http://tomcat.heanet.ie/native/ 下载你需要的版本的tcnative-1.dll放入System32下面或者放在Tomcat 的bin目录下即可。

NO3:

这个跟Mysql有关,就是在插入Date类型数据时候,Java改如何写插入语句:

Java代码
  1. Date newDate = java.sql.Date.valueOf(time);  
  2. rs.moveToInsertRow();  
  3. rs.updateDate(5, newDate);  
  4. rs.insertRow();  

NO4,:

今天用javamail做了一个发送邮件的功能.遇到了一系列的问题.

1:在本地(windows环境)测试一切正常,上传到服务器(Linux环境)就出了问题.[java.lang.SecurityException: Access to default session denied ],也就是获得默认的session时无法获得.郁闷了N久,在网上搜了下,有朋友遇到同样的问题,但都没人给予解决方案,我在csdn,javaeye发帖也没人回.后来在又看了一朋友的blog,他写的解决办法是, 把 mailSession = Session.getDefaultInstance(props,sa);改成mailSession = Session.getInstance(props,sa); 就是新创建一个session,我试了下,可以解决问题.但还是找到为什么不能获取默认session的原因.而且担心这样没次都Session.getInstance(props,sa);会不会出问题.

2.发送email内容为html时,出现乱码.同样是在本地测试正常,传到服务器上就出问题.后来经过测试,发现是服务器默认编码的问题,服务器 的默认编码UTF-8,我的email内容是本地一html文件,在读取文件内容时没有设置编码,所以读取出来的就已经是乱码了,.后来该成 FileInputStream fis = new FileInputStream(filename);BufferedReader in = new BufferedReader(new InputStreamReader(fis,"GBK"));就OK了. InputStreamReader不指定编码方式的话将采用底层操作系统的默认编码方式,所以这里要在构造器重指定编码的方式.

3.static变量的问题.         我定义了一个静态类变量public static boolean isRunning = false;来判断状态,刚开始一切正常,但是在一次出了异常之后.就无法执行了,有让我郁闷了好大一会.后来才发现.是static的原因.( static变量属于类变量,在这个类的所有 new出来的对象中只存在一个该变量,每个对象是对同一变量进行操作,static的变量和初始化块仅仅运行一次。不象没有static的变量,每次new的时候,都会重新初始化 。)因为static变量只初始化一次,之后使用的值都是之前的状态值.所以我的问题就出在当运行正常时,运行时会把状态改为true,结束后会把状态改为false.但是出现异常时,后面就没把状态改成false.所以下次执行时就无法往下执行了. from:http://hi.baidu.com/xublog/blog/item/7f7d5bfc8f356381b901a0e7.html

posted on 2009-03-31 14:47 lau 阅读(1032) 评论(2)  编辑  收藏 所属分类: Eclipse

Feedback

# re: Eclipse+Tomcat调试时的一些错误笔记[未登录] 2009-09-30 13:13 111

下面代码是Jmail中源码,解释了为什么报错
if(defaultSession.authenticator != authenticator1 && (defaultSession.authenticator == null || authenticator1 == null || defaultSession.authenticator.getClass().getClassLoader() != authenticator1.getClass().getClassLoader()))
throw new SecurityException("Access to default session denied");  回复  更多评论   

# re: Eclipse+Tomcat调试时的一些错误笔记[未登录] 2009-09-30 13:17 111

Java应用服务器的编码方式是启动JVM时,JVM参数-Dfile.encoding指定的,建议你使用这个来改变应用的默认编码方式,这样代码更整洁点
nohup java -Xms128m -Xmx256m -Dfile.encoding=GB2312 -cp $CLASSPATH   回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: