学会看出错信息很重要,这个能知道错在哪里很重要。
一般会有两种出错的情况:
1 语法错误
首先不能有语法错误,否则会先报错的,即便缺失类定义,也先提示这个错误,比如:
错误信息:
2 缺失类定义
比如这样的代码:
首先,Microsoft.DVAP.PSO.PSOInterfaceWraper是正常的,但还有相关的类可能需要也会导致出错的。
没有了第一种错误,但会有缺失类的提示(NoClassDefFoundError):
要了解为什么,可以看看 Microsoft.DVAP.PSO.PSOInterfaceWraper 的定义,比如:
追查一下com.chinavnet.zx.service.VNetCenterInterfaceForSP即可找到凶手了:
这里引入了javax.xml.rpc.Service,而没有办法找到此类的定义,所以就出错了啦~~
java里面根据这样的名称还真不知道缺失了哪个jar文件,那只能查一下相关的jar文件了,用jbuilder可以打开jar文件看的到,其它软件也许也可以的,是jaxrpc.jar文件,那可以把这个jar文件复制到 JAVA_DIR/jre/lib/ext/下即可,阿权不知道还可以复制到啥目录,java还是个复杂的东西,复制完毕还需要重启一下tomcat才行。
可以看到程序的运行结果:
另外说一下可以检查引用的是哪个jar的方法,就是代码里面说的了:
注意,类是需要public的,abstract的会得到类似的提示:
这样顺着错误解决错误就正常了~
原创内容如转载请注明:来自 阿权的书房
一般会有两种出错的情况:
1 语法错误
首先不能有语法错误,否则会先报错的,即便缺失类定义,也先提示这个错误,比如:
<%
b = "";
String a = "";
b = "";
String a = "";
错误信息:
引用
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 3 in the jsp file: /beijing/import.jsp
Generated servlet error:
[javac] Compiling 1 source file
/Data/apps/tomcat/work/Standalone/localhost/_/beijing/import_jsp.java:46: cannot resolve symbol
symbol : variable b
location: class org.apache.jsp.import_jsp
b = "";
^
1 error
An error occurred at line: 3 in the jsp file: /beijing/import.jsp
Generated servlet error:
[javac] Compiling 1 source file
/Data/apps/tomcat/work/Standalone/localhost/_/beijing/import_jsp.java:46: cannot resolve symbol
symbol : variable b
location: class org.apache.jsp.import_jsp
b = "";
^
1 error
2 缺失类定义
比如这样的代码:
首先,Microsoft.DVAP.PSO.PSOInterfaceWraper是正常的,但还有相关的类可能需要也会导致出错的。
<%@ page import="Microsoft.DVAP.PSO.PSOInterfaceWraper" %>
<%@ page contentType="text/html; charset=gb2312" %>
<%
String b = "";
String fileInfo = "";
fileInfo = new PSOInterfaceWraper().getClass().getProtectionDomain().getCodeSource().getLocation().toString();
out.print("<hr>"+fileInfo+" <hr>");
%>
<%@ page contentType="text/html; charset=gb2312" %>
<%
String b = "";
String fileInfo = "";
fileInfo = new PSOInterfaceWraper().getClass().getProtectionDomain().getCodeSource().getLocation().toString();
out.print("<hr>"+fileInfo+" <hr>");
%>
没有了第一种错误,但会有缺失类的提示(NoClassDefFoundError):
引用
root cause
java.lang.NoClassDefFoundError: javax/xml/rpc/Service
java.lang.NoClassDefFoundError: javax/xml/rpc/Service
要了解为什么,可以看看 Microsoft.DVAP.PSO.PSOInterfaceWraper 的定义,比如:
package Microsoft.DVAP.PSO;
// Imports
import com.chinavnet.zx.service.VNetCenterInterfaceForSP;
import com.chinavnet.zx.service.VNetCenterInterfaceForSPSoap;
public class PSOInterfaceWraper {
// Imports
import com.chinavnet.zx.service.VNetCenterInterfaceForSP;
import com.chinavnet.zx.service.VNetCenterInterfaceForSPSoap;
public class PSOInterfaceWraper {
追查一下com.chinavnet.zx.service.VNetCenterInterfaceForSP即可找到凶手了:
package com.chinavnet.zx.service;
// Imports
import java.net.URL;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceException;
public abstract interface VNetCenterInterfaceForSP extends Service {
// Imports
import java.net.URL;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceException;
public abstract interface VNetCenterInterfaceForSP extends Service {
这里引入了javax.xml.rpc.Service,而没有办法找到此类的定义,所以就出错了啦~~
java里面根据这样的名称还真不知道缺失了哪个jar文件,那只能查一下相关的jar文件了,用jbuilder可以打开jar文件看的到,其它软件也许也可以的,是jaxrpc.jar文件,那可以把这个jar文件复制到 JAVA_DIR/jre/lib/ext/下即可,阿权不知道还可以复制到啥目录,java还是个复杂的东西,复制完毕还需要重启一下tomcat才行。
可以看到程序的运行结果:
引用
--------------------------------------------------------------------------------
file:/usr/java/j2sdk1.4.2_15/jre/lib/ext/PSO.jar
--------------------------------------------------------------------------------
test OK
file:/usr/java/j2sdk1.4.2_15/jre/lib/ext/PSO.jar
--------------------------------------------------------------------------------
test OK
另外说一下可以检查引用的是哪个jar的方法,就是代码里面说的了:
fileInfo = new PUBLIC_CLASSNAME().getClass().getProtectionDomain().getCodeSource().getLocation().toString();
注意,类是需要public的,abstract的会得到类似的提示:
引用
com.chinavnet.zx.service.VNetCenterInterfaceForSP is abstract; cannot be instantiated
这样顺着错误解决错误就正常了~
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
JSP使用Mysql
SVN日志错乱

给你一个JAVA类包搜索引擎,搜一下就知道
http://www.jar114.com