`

web开发环境版本不同的问题 页面参数乱码 OutOfMemoryError

 
阅读更多
    今天上午郁闷死啦,因为部署项目的时候遇到了两个大问题。这两个问题产生的原因是本地开发环境和运行环境同生产机上的不同,下面我细细道来。
我本地使用的tomcat6.0、MyEclipse9、jdk1.6,生产机上的是tomcat5.5、jdk1.5
    第一个问题:将程序部署到linux环境下之后,开始发布的过程中,一直报找不到文件路径的错误。
因为这是一个写日志的文件,在windows下和linux下路径是不同的。比如在windows下的路径为: String pandianlogspath = "d:/logs/pandian_sql_log";   但是在linux路径就是 String pandianlogspath ="/usr/local/tomcat/logs/pandian_sql_log";因此在本地运行程序的时候使用的就是windows下的路径,每次部署程序到linux系统下的生产机上的时候就要修改路径。这是一个很麻烦的事情!
但是我确保部署的程序中文件路径是linux系统下的路径,但是他就是报错。
解决办法:每次打war包之前都选择MyEclipse菜单栏中的Project下的clean,清除一下要发布的项目。
    第二个问题:页面参数乱码问题。
这个是因为本地的D:\apache-tomcat-5.5.26\conf\server.xml和生产机上的server.xml的配置不一样的问题,我本地的配置是
<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
生产机上的是: <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />

如果不指定编码格式,那么默认的编码是iso-8859-1,因此可以使用下面这种方式转码:
public static String getCodeString(String str){
if (str != null && !str.isEmpty()) {
try {
str = new String(str.getBytes("ISO-8859-1"),
"GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return str;
},但是如果指定了编码,那么就不可以这样转码了,否则就会出现乱码。
解决办法:第一、指定文件编码格式,URIEncoding="GBK"
          第二、不指定编码,利用getCodeString(String str)方法在程序中对参数处理。

      第三个问题:启动程序的时候或者查询的时候后台报内存溢出的错误。java.lang.OutOfMemoryError
这个问题是具有不确定性的,出现是无规律的。只要出现内存溢出了,就需要重启服务器,否则根本就登陆不了系统。
解决办法:在D:\apache-tomcat-5.5.26\bin\catalina.sh中,原来的文件是:

# Set juli LogManager if it is present
if [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; then
  JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties" 
fi
只需要添加"-Xms128" "-Xmx512"就可以了
# Set juli LogManager if it is present
if [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; then
  JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties" "-Xms128" "-Xmx512"
fi
听同事说这是java虚拟机的配置,但是为什么这样改还有待考虑。反正这样改了之后就不出错了。
有的是使用的tomcat的压缩版本,没有catalina.sh文件,怎么办呢?可以看一下
http://blog.csdn.net/sup_heaven/article/details/6911948

      第四个问题:后台说找不到 java.lang.String.isEmpty()这个方法。
这个是因为本地项目添加的是jdk1.6的jar包,打包的时候用的是1.5版本的,生产机上使用的是JDK1.5 此时程序编译的时候一定要使用JDK1.5 编译。jdk1.6中的方法无法被1.5的使用。
解决办法:把jar包换成1.5或者是不使用jdk1.6中的方法,java.lang.String.isEmpty()是jdk1.6中的方法。
注意:jdk版本不同是一个很严重的问题,因为在本地运行的好好的程序到生产机上就报错了。 





分享到:
评论

相关推荐

    遭遇OutOfMemoryError

    在IT领域,尤其是在Java开发中,`OutOfMemoryError`是一个常见的问题,通常表明程序在运行过程中耗尽了分配给它的内存资源。这个问题在本案例中发生在网店系统的升级后,经过压力测试,系统突然崩溃,抛出了`...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用的堆内存超过了Java虚拟机(JVM)分配给它的最大堆内存限制时。本文将详细...

    java.lang.OutOfMemoryError: PermGen space

    在Java编程中,我们常常会遇到一个让人头疼的问题,那就是“java.lang.OutOfMemoryError: PermGen space”错误。这个错误提示表明,应用程序在运行过程中,内存的永久代(Permanent Generation)空间不足,导致了...

    解决OutOfMemoryError内存溢出

    在Java开发过程中,我们经常会遇到`java.lang.OutOfMemoryError`(简称OOM)的问题。这个问题的发生主要是由于JVM内存不足或程序中存在内存泄漏所引起的。本文将深入探讨OOM产生的原因以及如何有效地解决这一问题。 ...

    java.lang.OutOfMemoryError解决办法

    Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配内存时遇到了问题。根据提供的信息,这个错误主要涉及到两个方面:`PermGen space`和`Java heap`,并且与Tomcat服务器相关...

    ant编译时抛出OutOfMemoryError.doc

    总的来说,`OutOfMemoryError`是Java开发过程中常见的问题,尤其是在处理大型项目时。理解如何调整JVM内存配置和优化构建过程,对于避免这类错误至关重要。合理地设置内存参数可以显著提高Ant构建的效率和稳定性,...

    java.lang.OutOfMemoryError: Java heap space 解决方法

    "Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...

    OutOfMemoryError_8种典型案例分享

    由于内存问题导致的程序崩溃给开发和维护带来了极大的挑战,而解决这类问题需要对内存管理有深刻的理解。下面详细阐述8种常见的OutOfMemoryError案例及其形成原因、解决方法: 1. Java堆内存溢出(Java heapspace)...

    junrar的OutOfMemoryError错误解决源码

    在日常的IT工作中,我们经常会遇到各种类型的问题,其中,`OutOfMemoryError`是一个常见的Java运行时异常,它表明程序在执行过程中耗尽了可用的内存资源。对于使用开源库junrar进行RAR文件解压缩的开发者来说,这个...

    解决OutOfMemoryError: PermGen space

    解决“OutOfMemoryError: PermGen space”问题虽然过程可能比较痛苦,但是一旦找到正确的方法,问题就能得到解决。本文提供的解决方案包括调整PermGen space的大小、优化代码、使用JConsole监控内存等,希望能帮助...

    tomcat 出现 OutOfMemoryError 的解决方法

    针对 Tomcat 出现 `java.lang.OutOfMemoryError: PermGen space` 和 `java.lang.OutOfMemoryError: Java heap space` 的问题,通过调整 JVM 的内存配置以及优化应用本身,可以有效避免内存溢出的发生。同时,对于...

    java.lang.OutOfMemoryError处理错误

    java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,发生这种错误时,JVM将无法继续运行,程序将崩溃。这种错误的出现通常是由于Jvm的内存不足或内存泄露导致的...

    MAT解析hprof内存溢出分析工具OutOfMemoryError-java程序开发

    Java开发过程中,遇到`OutOfMemoryError`是一种常见的挑战,它表明程序在运行时耗尽了内存资源。MAT(Memory Analyzer Tool)是IBM提供的一款强大的Java内存分析工具,它专为解决此类问题而设计,帮助开发者深入理解...

    Caused by: java.lang.OutOfMemoryError: PermGen space解决方案

    在Java应用程序运行过程中,"java.lang.OutOfMemoryError: PermGen space"错误是常见的一个问题,尤其是在使用Tomcat这样的Java应用服务器时。这个错误表明应用程序在 PermGen 区域(Permanent Generation)耗尽了...

    java.lang.OutOfMemoryError: PermGen space及其解决方法

    ### Java.lang.OutOfMemoryError: PermGen space 及其解决方法 #### 一、PermGen space 概述 在Java虚拟机(JVM)中,PermGen space(永久代)是用于存储类的信息、常量、静态变量等数据的区域。在Java 8之前,Perm...

    编译时出现java.lang.OutOfMemoryError Java heap space异常

    ### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...

    系统稳定性——OutOfMemoryError常见原因及解决方法1

    【系统稳定性——OutOfMemoryError常见原因及解决方法】 在Java应用程序中,系统稳定性的一个关键因素是避免出现`OutOfMemoryError`。这种错误通常表明JVM(Java虚拟机)的内存资源已经耗尽,无法继续正常运行。...

Global site tag (gtag.js) - Google Analytics