java web 开发问题总结 1 原创-胡志广

问题总结 专栏收录该内容
11 篇文章 0 订阅

1.      Linux ssh 多机配置无法连接的问题解决方法

折腾了半天操作步骤一直没有问题,但是就是用ssh连接另一台机器时还是需要输入密码

后来上网查找了一下,该问题是由于$home路径的权限必须是700,而我当前的目录的权限是775,所以就遇到了问题,这问题太囧了,细节决定成败啊。

 

下面是解决方法:

chmod  700 /home/nutch

这是我要进行连接ssh用户的根目录(nutch)

 

2.      linux下不重启使/etc/profile环境变量生效

source /etc/profile  (全局的)

source ~/.bash_profile (个人的)

 

 

3.      vmware nat service 自动停止解决方法

右键->我的电脑->服务->

Vmware nat service 的“自动”改为“手动”,并启动服务,启动后,状态就是上面图显示的已启动,手动

 

4.    linux 关机命令

1)shutdown –help 

  可以查看shutdown命令如何使用,当然也可以使用man shutdown命令。 

  2 shutdown -h now 现在立即关机 

  3shutdown -r now 现在立即重启 

  4shutdown -r +3 三分钟后重启 

  5shutdown -h +3 “The System will shutdown after 3 minutes” 提示使用者将在三分钟后关机 

  6shutdown -r 20:23 2023时将重启计算机 

  7shutdown -r 20:23 & 可以将在2023时重启的任务放到后台去,用户可以继续操作终端 

 

5.      linux su 切换用户错误解决办法

su 切换用户时,报出如下错误:当前用户不可用

This account is currently not available

 

解决办法:

root用户执行下列命令:

viw /etc/passwd

 

打开后,看到如下内容:

rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin

named:x:25:25:Named:/var/named:/sbin/nologin

mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin

 

后面的内容都是/sbin/nologin

 

我们需要把/sbin/nologin修改为“/bin/bash”就可以了

 

如:apache:x:48:48:Apache:/var/www:/bin/bash

 

 

6.      mod_jk版本错误导致apache 启动失败解决方法

重启apache

如果出现:
启动 httpdSyntax error on line 2 of /usr/local/apache2/conf/mod_jk.conf:
Cannot load /etc/httpd/modules/mod_jk.so into server: /etc/httpd/modules/mod_jk.so: invalid ELF header
则说明mod_jk.so的版本错误.

 

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries下载指定的mod_jk,注意版本:

选择你的操作系统类型,我的是linux,进入后:

因为我的是apache2.2.3所以,我进入了jk-1.2.31

进入后,选择你操作系统的类型,我的服务器版本是64位的所以选择x86_64

然后我的apache版本是2.2.3的所有就选择红框内的

 

7.      tomcat6 jar not loaded错误解决方法

当启动tomcat6时,如果报了如下错误:

validateJarFile(/usr/file/tomcat6/webapps/eclass/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

是由于eclass项目中lib下的servlet-api.jartomcat lib下的servlet-api.jar包冲突了,所以报了如上错误,解决方法是把webapps下的项目中的lib下的servlet-api.jar包删除掉就可以了

 

 

 

8.      Oracle 11无法连接dba

当通过oracle 用户 执行命令时:

Sqlplus ‘/as sysdba’

然后报了如下错误:

ERROR:

ORA-12705: Cannot access NLS data files or invalid environment specified

 

查找一下环境变量中是否有

NLS_LANG="AMERICAN_AMERICA.UTF-8" 
export NLS_LANG

这样的内容,然后删掉

删掉后

执行

Source /etc/profile

source ~/.bash_profile

才可以生效

 

9.      ORA-0195错误解决

ORA-01950: 对表空间zy无权限;
 
ORA-01950
错误分析
用户没有resource权限。

添加用户的resouce 角色即可

 

10. ORA-00942: 表或视图不存在 hibernate 解决方法

当你用hibernate执行查询方法时,如果报了如下错误:

 

ORA-00942: 表或视图不存在

 

是因为hbm文件里面的配置出现了问题

 

 <class name="com.jdodrc.pt.vo.TPtUserWeiboShare" table="T_PT_USER_WEIBO_SHARE" schema="SAA">

 

schema="SAA"只要删除这个就可以了,这个是指定的是表空间,由于数据库迁移了,所以表空间不对了,所以就会出现错误了

所以删除掉这句就好了schema="SAA"

 

11. 配置oracle的权限

 配置一般的oracle用户,配置

CONNECT

RESOURCE

2个角色

CREATE SESSION

这个系统权限

然后配置一些对象权限

 

12. 动态执行表不可访问,本会话的自动统计被禁止"错误解决

 

最近做统计报表的时候使用PL/SQL,但是每次第一次打开表的时候会提示"动态执行表不可访问,本会话的自动统计被禁止"的错误,一消息如下: V$SESSION,V$SESSTAT,V$STATNAME没有被授权,没有权限访问这几张表,所以没有办法进行统计.当然要给授权了.授权SQL如下: 

sys登陆后,执行下列语句
grant select on v_$statname to user;
 
grant select on v_$sesstat to user;
 
grant select on v_$session to user;
 
grant select on v_$mystat to user;
 

 

user就是要被授权的用户名.记下以备后用.

 

 

13. FCKeditor:上传图片The server didn 't send back a proper XML response

下载xalan-j_2_7_0-bin-2jars.zip这个包

然后将serializer.jar   xalan.jar2个文件copy到应用的lib

 

 

14. FCKeditor fileupload Error on file upload.Error number:203分析解决

还发现了个问题,这个编辑器的上传功能和webwork的某个过滤器会发生冲突,在web.xml中加载webwork的过滤器后编辑器的上传功能就不能用了,我试了下,删除webworkfileupload过滤器情况依旧,删除webwork的全部过滤器就没问题了,不知道和哪个过滤器发生冲突了,还因为它不能直接上传其他类型的文件,后来就干脆不用它的文件上传功能了,提供了一个统一的文件上传功能

 

如果你和我一样使用的struts2进行项目开发的话,你会发现当上传文件时会出现 “Error on file upload. Error number:203”的错误提示。这是因为fckstruts2框架不兼容,struts2转发了fckservlet 
解决办法:在web.xml中修改struts2filter-mapping

Java代码

<filter-mapping> 
      <filter-name>struts2</filter-name> 
      <url-pattern>/*</url-pattern> 
</filter-mapping> 
修改成 
<filter-mapping>    
       <filter-name>struts2</filter-name>    
       <url-pattern>*.action</url-pattern>    
       <url-pattern>*.jsp</url-pattern>    
</filter-mapping> 
如果还有其他url映射也可以添加到filter-mapping中去。

说明:webwork框架中出现此类问题同理。

 

15. Oracle使用clob字段

在配置文件中加入红色标注的行

<prop key="hibernate.connection.SetBigStringTryClob">true</prop>

 

sessionFactorybean中加入该内容

 

然后再vo.hbm.xml中的clob字段将type定义为text类型

 

        <property name="edmContent" type="text">

            <column name="EDM_CONTENT" />

        </property>

 

然后再po中,将clob的字段定义为String 类型就可以了

 

 

16. codec包解决方法

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException

 

出现如上错误如下进行解决:

网络编程HttpClient 要一个包commons-codec-1.x.jar

 

你可以从这个地址http://commons.apache.org/downloads/download_codec.cgi 下载到最新的 common codec

 

 

17. Httpclicent post乱码解决方法

HttpClient httpClient = new HttpClient();

       httpClient.getParams().setParameter(

          HttpMethodParams.HTTP_CONTENT_CHARSET"UTF-8");

 

18. 使用servlet filter后多次加载一个url的解决方法

当你加载上过滤器后,你查看是否会出现一个页面同时加载了多次;

这样的现象很头大,有时候不容易发现,但是这是由什么引起的呢?

 

查看一下你的filter中的这句话

filterChain.doFilter(request, response);

是否出现了多次(执行了多次)

如果执行多次则会出现上面的问题,那么将这个做判断,一次拦截中只出现一次即可。

当调用2filterChain.doFilter(request, response);该方法后,将会出现如下错误

java.lang.IllegalStateException

 

还是和上面的解决方法一样。

 

 

19. JDK AES加密,linux下无法解密的解决方法

现象描述:

windows上加解密正常,linux上加密正常,解密时发生如下异常

 

javax.crypto.BadPaddingException: Given final block not properly padded

       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
       at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
       at javax.crypto.Cipher.doFinal(DashoA13*..)
       at chb.test.crypto.AESUtils.crypt(AESUtils.java:386)
       at chb.test.crypto.AESUtils.AesDecrypt(AESUtils.java:254)
       at chb.test.crypto.AESUtils.main(AESUtils.java:40) 

解决方法:

经过检查之后,定位在生成KEY的方法上,如下:

KeyGenerator kgen = KeyGenerator.getInstance("AES");                    //AES加密,创建密钥生成器,定义它的算法 

kgen.init(128, new SecureRandom(password.getBytes()));   //使用已创建的随机源初始化密钥生成器

 

 

修改到如下方式,问题解决:

KeyGenerator kgen = KeyGenerator.getInstance("AES");                    //AES加密,创建密钥生成器,定义它的算法

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" ); 

secureRandom.setSeed(password.getBytes()); 

kgen.init(128,secureRandom);   //使用已创建的随机源初始化密钥生成器

红色加粗处是修改后的内容

原因分析

 

SecureRandom 实现完全隨操作系统本身的內部狀態,除非調用方在調用 getInstance 方法之後又調用了 setSeed 方法;该实现在 windows 上每次生成的 key 都相同,但是在 solaris 或部分 linux 系统上则不同。

 

 

20. 通过request获取完整的uri(带参数)

String uri=hsr.getRequestURI();

//获取完整路径+参数

String query=hsr.getQueryString();

if(query!=null){

       uri+="?"+query;

}

 

获取到完整的uri(但是没有参数)

String uri=hsr.getRequestURI();

获取到请求的完整的参数

String query=hsr.getQueryString();

如果参数不为空,则将uri连接上参数形成完整的uri地址

if(query!=null){

       uri+="?"+query;

}

 

 

 

21. Linuxdir无法使用解决方法

当执行dir时,报了如下错误:

-bash: /usr/bin/dir: /lib/ld-linux.so.2: bad ELF interpreter:

 

因为我移动文件时移动错了,将根目录下的lib移动到其他位置了

然后再将lib移动回根目录即可

 

注:

移动lib时一定要注意前面的是否是/lib(根目录),否则出现问题后很郁闷的

 

 

 

22. 启动apache 报错

D:\Program Files (x86)\Apache2.2\bin>httpd.exe

httpd.exe: Could not reliably determine the server's fully qualified domain name

, using 192.168.0.127 for ServerName

(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试。  : make_sock: cou

ld not bind to address 0.0.0.0:80

no listening sockets available, shutting down

Unable to open logs

 

报上面错误是由于80端口冲突,所以修改apache端口就好了

 

 

23. apache出现You don't have permission to access / on this server. 提示

打开浏览器后提示403

You don't have permission to access / on this server.

解决方法:

httpd.conf的内容:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all 
</Directory>

修改为

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

 

 

 

24. Apache 禁止index of/

httpd.conf中找到如下内容:

<Directory />

    Options  Indexes  FollowSymLinks

    AllowOverride None

</Directory>

 

将上面的Indexes删除即可

<Directory />

    Options  FollowSymLinks

    AllowOverride None

</Directory>

 

 

25. Filterout.printjs跳转不管用的解决方法

filter中将未登陆的按照如下方式跳转:

// 未登录,跳转到登录页

                 

                  PrintWriter out = response.getWriter();

                  out.print("<script>window.top.location.href='"

                         + hsr.getContextPath() + "/front/login.jsp';</script>");

 

但是当执行filter跳转时出现了问题,跳转到页面时,没有达到预期的效果,出现下面的状况:

url已被拦截,但是却没有达到预期效果跳到指定页面;

那么我们同firefox debug 一下它的content-type

这里不是text/html

因为我们在执行输出时没有设定content-type

所以我们将过滤器输出的前面修改一下:

加上一行:

response.setContentType("text/html;charset=UTF-8");

 

下面是完整代码:

// 未登录,跳转到登录页

                  response.setContentType("text/html;charset=UTF-8");

                  PrintWriter out = response.getWriter();

                  out.print("<script>window.top.location.href='"

                         + hsr.getContextPath() + "/front/login.jsp';</script>");

设置好后,然后再试验后,可以进行成功跳转了

所以在进行write.print时一定要注意设置content-type这里一定要注意,否则有时候找这样的问题郁闷死

 

26. Tomcat 性能优化

加大tomcat连接数:

tomcat配置文件server.xml中的配置中,和连接数相关的参数有:
minProcessors
:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors
:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount
:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups
:是否反查域名,取值为:truefalse。为了提高处理能力,应设置为false
connectionTimeout
:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

其中和最大连接数相关的参数为maxProcessorsacceptCount。如果要加大并发连接数,应同时加大这两个参数。

web server
允许的最大连接数还受制于操作系统的内核参数设置,通常Windows2000个左右,Linux1000个左右。

 

27. java.net.SocketException: Too many open files解决方法

linuxtomcat 部署后,下载文件一段时间后总是报如下错误:

java.net.SocketException: Too many open files

windows下是没有问题的,linux对进程的打开文件数是有限制的。

 

 

用命令ulimit -a查看

[root@test security]# ulimit -a 
core file size        (blocks, -c) 0 
data seg size         (kbytes, -d) unlimited 
file size             (blocks, -f) unlimited 
max locked memory     (kbytes, -l) unlimited 
max memory size       (kbytes, -m) unlimited 
open files                    (-n) 1024 
pipe size          (512 bytes, -p) 8 
stack size            (kbytes, -s) 8192 
cpu time             (seconds, -t) unlimited 
max user processes            (-u) 7168 
virtual memory        (kbytes, -v) unlimited 
[root@test security]# 
通过以上命令,我们可以看到open files 的最大数为1024

 

对于并发量比较大的网站这个限制是有些捉襟见肘的,所以我通过这个命令

 

ulimit -n 4096 
把打开文件数的上限设为了4096,这下好了,项目又稳定了

但是重新登陆后,用ulimit -n 4096 设置的值貌似会变回去,所以需要永久设置open files  的值才行啊

 

所以换下面的方式试试:

 

ulimit -n 修改open files 总是不能保持。所以用下面一个简单的办法更好些。

修改/etc/security/limits.conf 添加如下一行:

* - nofile 1006154

修改/etc/pam.d/login添加如下一行

session required /lib/security/pam_limits.so

 

还有更重要的就是在对于io进行操作时,需要注意对于流的关闭

 

 

28. Spring 定时器执行2次解决方法(tomcat)

当执行spring 定时器时,在tomcat中执行了2

什么问题呢?

因为在server.xml中:

 

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

                            <Context path="" docBase="/usr/file/tomcat6/webapps/point" debug="0" reloadable="true" crossContext="true"/>

 

这里appbase=”webapps”,然后下面有配置了

<Context path="" docBase="/usr/file/tomcat6/webapps/point" debug="0" reloadable="true" crossContext="true"/>

由于pointwebapps下,所以就执行了2

解决方法如下

appbase=””设置为空就可以了

 

 

29. 将字符串格式日期转为date

将字符串格式为:Wed Sep 14 14:39:57 CST 2011转为date 方式如下:

java.util.Date da=new java.util.Date("Wed Sep 14 14:39:57 CST 2011 ");

 

 

30. hibernate 手动设置生成方式

hibernate 通过注入id的方式手动设置主键方式

.hbm.xml配置文件中

        <id name="id" type="java.lang.String">

            <column name="ID"  />

            <generator class="assigned" />

        </id>

将主键的方式设置为assigned就可以了

  <generator class="assigned" />

 

31. Svn启动方法

 svn 用户进入到svn的目录的bin

[svnuser@jdodrc bin]$ sh csvn

Usage: csvn { console | start | stop | restart | condrestart | status | install | remove | dump }

执行csvn后,有这么多命令可以执行

那么我们执行一个startconsole就可以了

Start是启动svn服务

[svnuser@jdodrc bin]$ sh csvn start

Console是启动csvn的控制台

[svnuser@jdodrc bin]$ sh csvn console

 

 

32. Outlook 2007服务器保留副本

工具——账户——邮件,选择你要保留的那个邮件地址,点属性——高级,在最下边有一项在服务器上保留邮件副本,在前面点上勾,点击确定就行了。

 

 

 

 

33. Java 查看当前文件位置

File directory = new File("");//设定为当前文件夹
try{

    System.out.println(directory.getCanonicalPath());//获取标准的路径
    System.out.println(
directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}

 

 

 

34. Java 对象复制

 

String a[]={"1","2"};

       String b[]={};

       a[0]="3";

       b=a;

       a[0]="4";

       String c[]=a;

       System.out.println(b);

     System.out.println(c);

    

这里更改内容后,最后输出的结果为:

[Ljava.lang.String;@de6ced

[Ljava.lang.String;@de6ced

可以看出b,c 是一样的对象,

 

下面我们在b=a.clone();这样进行对象复制后试一下

       String a[]={"1","2"};

       String b[]={};

       a[0]="3";

       b=a.clone();

       a[0]="4";

       String c[]=a.clone();

       System.out.println(b);

     System.out.println(c);

输出结果为:

[Ljava.lang.String;@de6ced

[Ljava.lang.String;@c17164

可以看出b,c2个不同的对象

然后看一下输出更新的内容:

       System.out.println(b[0]);

     System.out.println(c[0]);

是:

3

4

 

也进行更新了,所以对于对象的复制用

对象.clone()

 

35. 读取txt内容

 

         private void read(FileInputStream fs) throws IOException{

        StringBuffer sb = new StringBuffer(); 

        BufferedReader br =new BufferedReader(new InputStreamReader(fs));

        String s=null;

        while((s=br.readLine()) != null

                                    { 

                                        sb.append(s); 

                                    } 

                             System.out.println(sb.toString());

             }

 

 

36. Eclipse 调整字体大小

General-->Appearance-->Colors and Fonts-->Basic-->Text Font

 

 

37. Mysql 高效sql分页

下面是关于mysql中如何写出更高效的分页SQL的具体例子及简单的对比分析,推荐使用下文所提到的“优化写法”!

1、优化写法: (先根据过滤条件取出主键id进行排序,再进行join操作取出其他相关字段)

select  t.id, t.thread_id, t.group_id, t.deleted, t.author_id,t.author_nick, t.author_ip,

t.content, t.last_modified, t.gmt_create, t.gmt_modified, t.floor, t.reply, t.reply_time from

(select id from group_thread_reply_0029 where thread_id = 771025 and deleted = 0 order by gmt_create asc limit 0, 15) a,group_thread_reply_0029 t where a.id = t.id;

 

 

38. myEclipse更新web项目名称后,部署名与项目名称不一样解决方法

更新WEB项目名称后,部署到TOMCAT上名称与项目名称不一样,解决方法如下:

右键项目->properties

然后打开下图,修改红框位置的名称与项目名称一致后,再部署到tomcat,项目名称和部署后的项目名称就一致了

 

39. An internal error occurred during “Generating Artifacts”解决方法

当通过myEclipse反向生成VO时,myEclipse报了如下错误:

解决方法如下:

打开项目的目录,然后打开.project文件

找到如下内容:

<natures>

              <nature>com.genuitec.eclipse.hibernate.hibernatenature</nature>

              <nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature>

              <nature>com.genuitec.eclipse.j2eedt.core.webnature</nature>

              <nature>org.eclipse.jdt.core.javanature</nature>

       </natures>

       然后删掉

       <nature>com.genuitec.eclipse.hibernate.hibernatenature</nature>

       这句话,保存.project文件,然后刷新myEclipse的项目

 

40. Vmware 安装ghost xp无法安装解决方法

在虚拟机中安装ghost 版的xp时会安装不上,是因为虚拟机中的磁盘没有进行分区,所以需要先进行分区才可以进行安装。

       

然后点击add hibernate capabilities添加hibernate支持,添加完hibernate支持后再进行反向工程则没有问题。

 

 

41. ftp主动模式

 

leapftp主动模式

选择图片内红框的形式就可以

 

 

42. Linux 修改默认路径

vi /etc/passwd

类似:

guest:x:502:502::/ftp/guest:/bin/bash

 

43. IE浏览器兼容性问题解决

在页面中,由于IE89,但是默认都不是兼容模式,在你的页面中加入下列语句,将内容兼容到IE7模式,那么浏览器则默认兼容模式为IE7

<META content="IE=7.0000" http-equiv="X-UA-Compatible"/>

 

 

 

44. 获取媒体文件播放时间等信息

String filePath = request.getParameter("filePath");

              //String webRoot = request.getSession().getServletContext().getRealPath("/");

              File file = new File(filePath);

              //取铃声名称,不包含扩展名

              String name = file.getName().substring(0, file.getName().length()-4);

              AudioFileFormat af = AudioSystem.getAudioFileFormat(file);

              //获取mp3码率

              int bitRate = (Integer)af.properties().get("mp3.bitrate.nominal.bps");

              bitRate = bitRate / 1000;

              //获取播放时间

              Long duration = (Long)af.properties().get("duration");

              duration = duration / 1000000;

              //获取文件大小

              Integer bytes = (Integer) af.properties().get("mp3.length.bytes");

              Double fileSize = bytes /(1024.0*1024.0);

              DecimalFormat df = new DecimalFormat("#.00");

              fileSize = Double.parseDouble(df.format(fileSize));

 

 

 

45. 不匹配某个单词的正则表达式

^((?!^baidu$).)*$

比如上面是不为baidu的则全部为真

 

46. 匹配不是某个网址(如baidu

^((?!^http://([a-z0-9]*\.)*baidu\.com$).)*$

比如匹配http://baidu.com(除了baidu都可以)

 

 

 

47. Eclipse @override 报错解决

eclipse中报错@override,解决方法是

Properties-->java Compiler-->Compiler Compliance Level 调整为6.0ok

下面标红框位置即是:

 

 

myEclipse9.0

 

48. JCONSOLE测试工具连接失败本地进程解决方法

 

-Djava.rmi.server.hostname=192.168.1.80
-Dcom.sun.management.jmxremote.port=8089
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

 

JAVA的执行参数中配置上如上内容即可

-Djava.rmi.server.hostname 这个是机器IP

-Dcom.sun.management.jmxremote.port jconsole的端口

-Dcom.sun.management.jmxremote.ssl是否需要SSL连接

-Dcom.sun.management.jmxremote.authenticate是否密码链接

 

如果需要监测TOMCAT,需要在catalina.sh或者catalina.bat加上如上参数,上面的端口是监测端口,所以在监测时输入IP和端口即可监测(端口是上面配置的端口)

49. Eclipse 自动提示功能(.不起作用)解决方法

Eclipse中的 Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced
里的「Select the proposal kinds contained in the 'default' content assist list」把「Other Java Proposals」选择打勾后,应用就可以解决这个问题了。

 

 

 

 

 

 

 

50. Alt+/ 不管是eclipse解决方法

1Eclipse下进入Windows ->Preperences ->General ->keys
2
、把word completion的快捷键设置alt+/删掉!

3、把Content Assist的快捷键由ctrl+space改成alt+/

 

51. could not create the java virtual machine eclipse启动时报错,解决方法

当启动myeclipse时,报了如下错误:

could not create the java virtual machine

 

myEclipse下的eclipse目录下找到eclipse.ini文件打开

然后将如下2个值相应改小即可;

-XX:PermSize=64M

-XX:MaxPermSize=128M

 

 

 

52. java.sql.SQLException: Parameter index out of range (0 < 1 ).错误解决方法

当用JDBC操作数据库时,报了如下错误:

java.sql.SQLException: Parameter index out of range (0 < 1 ).

是因为索引越界了

JDBC这块的索引是从1开始,不是0,所以需要注意

PreparedStatement ps = conn.prepareStatement(sql);

           ps.setString(1, "xxxxx");

           ps.setString(2, "2012-03-31");

 

 

53. mysql timestamp格式保存方法

时间类型保存直接用

    ps.setString(2, "2012-03-31");

string 方式保存即可

 

 

54. JDBC级联插入

JDBC A表进行插入后,

通过select LAST_INSERT_ID()

SQL语句获取到刚刚插入的ID,然后再插入到B表等,如果中间抛出了异常的话,那么回滚即可

 

55. Eclipse无法进行hibernate逆向生成解决方法

在进行hibernate逆向生成映像文件时,报如下错误时:

An internal error occurred during: "Generating Artifacts".

com/mysql/jdbc/DatabaseMetaData$5

因为我们在添加hibernate支持时,在我们的项目下有了2hibernate包,所以才有了版本不同,所以需要去除一种就可以了。

 

 

56. Mysql 日期格式化

 

DATE_FORMAT(g.createTime,'%Y-%m-%d')

 

 

57. Spring 报如下错误解决方法:

除去properites文件路径错误、拼写错误外,出现"Could not resolve placeholder"很有可能是使用了多个PropertyPlaceholderConfigurer或者多个<context:property-placeholder>的原因。

 

比如在spring 配置文件中配置了如下2properties

    <context:property-placeholder location="classpath:jdbc.properties" />

    <context:property-placeholder location="classpath:config.properties" />

 

那么肯定会报上面的错。

Spring 3.0解决方法:

content标签内加入:ignore-unresolvable="true"即可,举例如下:

 

<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true" />

    <context:property-placeholder location="classpath:config.properties" ignore-unresolvable="true" />

 

这样就没有问题了,那么我们为什么要引入这些properties呢,因为这样我们可以配置参数等信息,如JDBC参数配置:

<property name="driverClass" value="${jdbc.driverClassName}" />

 

58. 启动tomcat 无法启动解决方法

当启动tomcat报如下错误时:

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

At least one of these environment variable is needed to run this program

 

当报如上错误时,在

Tomcat bin目录下catalina.batwindows)或catalina.sh(linux)中添加上

JAVA_HOMEJRE_HOME 2个环境变量

如果是windows set ,如果是linuxexport

例如:

Set JRE_HOME

Set JAVA_HOME

Export JAVA_HOME

Export JRE_HOME

 

59. Putty Vi 乱码解决方法

选择UTF-8

然后再这里输入地址保存即可

 

修改为UTF-8 VI 可解决乱码,但是提示却是乱码,所以这里需要设置为2种即可。

 

60. Vi 跳转到指定行

:12

则跳转到12

 

61. Vi 显示行号

set nu

62. Vi 去掉高亮

设置了高亮搜索(:set hlsearch)以后,可以通过 :set nohlsearch 永久地关闭高亮

显示,也可以通过 :nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。

 

63. An error occurred at line: 23 in the generated java file解决方法

 

当启动tomcat后,执行JSP,报了如下错误:

 org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 23 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

 

那么是包冲突所致,我这里面是jsp-api.jarjsp-api 2.0.jar冲突,删除项目中的jsp-api 2.0.jar即可解决问题。

 

64. Eclipse 增加alt+/ 提示

Window->preferences->keys

查找到alt+/ word completion 将它改为其他的快捷键

然后查找content Assist ,然后将它的快捷键改为alt+/即可进行提示

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值