Java中常见错误和异常解决方法打印Word文件下载.docx

上传人:b****4 文档编号:6915575 上传时间:2023-05-07 格式:DOCX 页数:43 大小:210.57KB
下载 相关 举报
Java中常见错误和异常解决方法打印Word文件下载.docx_第1页
第1页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第2页
第2页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第3页
第3页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第4页
第4页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第5页
第5页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第6页
第6页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第7页
第7页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第8页
第8页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第9页
第9页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第10页
第10页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第11页
第11页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第12页
第12页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第13页
第13页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第14页
第14页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第15页
第15页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第16页
第16页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第17页
第17页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第18页
第18页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第19页
第19页 / 共43页
Java中常见错误和异常解决方法打印Word文件下载.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java中常见错误和异常解决方法打印Word文件下载.docx

《Java中常见错误和异常解决方法打印Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java中常见错误和异常解决方法打印Word文件下载.docx(43页珍藏版)》请在冰点文库上搜索。

Java中常见错误和异常解决方法打印Word文件下载.docx

ResourceBundleresource=ResourceBundle.getBundle("

test"

);

System.out.print(resource.getString("

msg0"

)+"

!

"

System.out.println(resource.getString("

msg1"

}

}

test.properties

msg0="

HelloWorld"

msg1="

dajiahao"

开始自己测试的时候:

将属性文件放在bin/下也试过也不行无赖中就在google中搜索了一下终于在sun的java论坛

(forum.java.sun./thread.jspa?

threadID=660477&

messageID=4231534)中找到了线索下面是帖子的容:

I'

vesolvedtheproblemthebestwaypossible.Basicallywhati'

vedoneisaddedanewclassfoldernamedconfigtotheprojecthomedir.Theniaddedthisclassfoldertotheclasspathinprojectproperties.Afterdoingallofthisyouonlyneedtoreferencethepropertiesfileby"

Email"

.

Hopethishelpsanyoneelsewhoishavingsimiliarproblems.

基本意思就是在src下建立classes(名字无所谓)文件夹将属性文件存放在下面,然后将这个文件夹加入类路径中!

运行就可以了:

加入类路径的方法:

你的工程文件夹->

properties->

选择Libraries选项卡->

AddClassFolder将刚才建立的文件夹加入就可以了!

结果如下:

;

2.中文显示

在classes目录下建立message_CH.properties容如下:

ms0="

大家好"

同样用上面的测试文件!

?

ó

乱码怎么回事啊!

在XX里搜索后找到了答案有以为网友写的很清楚:

gostar.bokee./3885062.html

下面引用如下:

原理

Property文件中,使用的编码方式根据机器本身的设置可能是GBK或者UTF-8。

而在Java程序中读取Property文件的时候使用的是Unicode编码方式,这种编码方式不同会导致中文乱码。

因此需要将Property文件中的中文字符转化成Unicode编码方式才能正常显示中文。

解决办法:

Java提供了专门的工具对Property文件进行Unicode转化,这种工具就是native2ascii,它在JDK安装环境的bin目录下。

native2ascii工具将带有本机编码字符(非拉丁1和非单一码字符)的文件转换成带有Unicode编码字符的文件。

假设需要转化的属性文件为:

D:

/src/resources.properties(含有中文字符)

转化后的属性文件为:

/classes/resources.properties(中文字符统一转化为Unicode)

那么使用如下命令

JAVA_HOME/bin/native2ascii-encodingGBKD:

/src/resources.propertiesD:

/classes/resources.properties

就能将含有中文字符的属性文件转化成单一Unicode编码方式的属性文件。

中文乱码自然会被解决。

通过上面的方法我将生成的文件打开一看容如下:

ch="

/u5927/u5bb6/u597d"

再运行结果如下:

(2)另一种解决办法:

Can'

Struts2国际化异常处理

这是找不到指定文件;

你必须把.properties文件,放在与这个调用文件.java相同的目录里;

Hello.java在workspace\test\src\\lj\guojiehua下

hello_en_US.properties必须在workspace\test\src下

hello_zh_CN.properties必须在workspace\test\src下

其实原因是我虽然在buildpath里面加了\pruway\source\source\config,但是系统编译的时候,在classes里面应该会自动产生resource_en_US.properties,可是实际情况是classes包下面没有产生,故我删掉重加,再编译结果发现通过了。

就是说,只要你buildpath路径对了,该路径下也有resoucebudle需要的类,那么系统会自动在classes里面自动编译产生这些类的。

所以,先检查classes里,有没有生成对应的resource_en_US.properties,如果没有,那么检查buildpath路径下有没有对应的properties类,如果有,那么证明系统编译没有编译完整,删掉path,重新addfoler,加入,再编译,检查classes下有无。

如果都有,那么证明成功。

10.java.lang.IllegalThreadStateException

解决办法:

不能启动两次线程

11.java.lang.NoSuchMethodError

答:

必须有一个publicstaticvoidmain(String[]args){//这里是入口}作为入口点,启动java虚拟机时虚拟机会找这个方法,如果没有就报exceptioninthread“main”java.lang.nosuchmethoderror

.UnknownHostException:

.baidu./

原始出错程序是这样的:

解答方式:

import.InetAddress;

publicclassa{

publicstaticvoidmain(Stringargs[])throwsException{//所有异常抛出

InetAddresslocAdd=null;

InetAddressremAdd=null;

locAdd=InetAddress.getLocalHost();

//得到本机

remAdd=InetAddress.getByName("

.baidu./"

);

System.out.println("

本机的IP地址:

+locAdd.getHostAddress());

MLDNJAVA的IP地址:

+remAdd.getHostAddress());

本机是否可达:

+locAdd.isReachable(5000));

//5000代表代数

};

运行后结果为:

如果注释掉remAdd=InetAddress.getByName("

运行结果又是这样的:

上述程序的解决办法是:

remAdd=InetAddress.getByName("

改成

程序运行结果如下:

完成实验要求,但是这里就有一个问题了,为什么去掉http//和后面的/的就运行的了呢?

(2)但是对于这个极其相似的程序却可以运行出结果:

import.InetAddress;

publicclassb{

publicstaticvoidmain(Stringargs[])throwsException{

InetAddressaddress=InetAddress.getByName("

.microsoft."

System.out.println("

ip:

"

+address.getHostAddress());

host:

+address.getHostName());

canonicalhostname:

+address.getCanonicalHostName());

byte[]bytes=address.getAddress();

for(byteb:

bytes)

{

if(b>

=0)System.out.print(b);

elseSystem.out.print(256+b);

运行结果为:

13.运行下列程序出现了这样的错误,这是线程的知识,一个线程如果启动了,再启动一个的时候就会报错:

java.lang.IllegalThreadStateException

程序如下:

classthrundextendsThread{

privateStringname;

publicthrund(Stringname){

this.name=name;

publicvoidrun(){//线程完成的动作

for(intj=0;

j<

4;

j++){

System.out.println(name+"

第"

+j+"

个"

}

publicclassa{

publicstaticvoidmain(Stringagrs[]){

thrundth1=newthrund("

线程A"

//实例化一个线程对象

th1.start();

//调用线程主体

运行结果如下:

14.Thepublictypeabcmustbedefinedinitsownfile这样的警告是出现在我下面这样的程序中的:

所以我在XX上输入这样的问题:

java程序中两个类为什么不能同时有public(其中有一个是主方法)?

得到的回答是这样的:

因为一个GM规定一个类中只能有一个PUBLIC的而且源文件的名字只能和PUBLKIC属性的类去一个名字。

另一种回答是这样的:

同个源文件有多个公共类,编译器就找不到应该执行的main方法了

15.运行下列泛型程序时,出现一下错误:

程序:

classadd<

T>

{

privateTy;

publicTp(Ty){

System.out.println(y);

returny;

publicstaticvoidmain(Stringargs[]){

add<

String>

adder=newadd<

();

//System.out.println("

输出属性"

+adder.getX());

//adder.p("

你好,邱林和"

fun(adder);

publicstaticvoidfun(add<

>

temp){

System.out.println("

容"

+temp);

出现了如下错误:

其中这个voidisaninvalidtypeforthevariablefun这个错误的解释时:

第一步:

检查拼写是否错误;

第二步:

检查voidactionPerformed(ActionEventae){}函数的位置,不能让它嵌套在别的函数里。

我不知道为什么,但我这样改对了。

通过这个观察上述代码确实发现这个fun方法被包含在了主方法中,所以导致这个错误,改成下列程序后,程序运行结果如下:

publicclassa{

}//一开始这个}被放在了fun函数下面,所以导致了这个错误。

16.错误:

java:

Syntaxerrorontoken"

,expected

17.解释是这样的:

intb=3;

b=b-2;

应为这2行代码写的地方还处在声明定义阶段处。

就好象你脑子里想象着我有3块钱(第一行),但是又立马用这想象的3快去买物品(第二行)所以卖东西的人肯定会说你(报错).就是说,b=b-2这行代码处的位置还处于声明阶段,没有在存中给他划分空间,你是不能操作的。

要么声明为静态的,提前划分空间

17,运行以下程序时,报错:

程序为:

publicstaticvoidmain(Stringargs[]){

Runtimerun=Runtime.getRuntime();

JVM最大存量:

+run.maxMemory());

Processpro=null;

//声明一个Process对象,接收启动的进程

try{

pro=run.exec("

Thunder.exe"

//调用本机程序,必须进行异常处理

}catch(Exceptione){//打印异常信息

e.printStackTrace();

Thread.sleep(5000);

}catch(Exceptione){

pro.destroy();

//结束此进程

}

这一句有问题,pro=run.exec("

//调用本机程序,必须进行异常处理,里面的Thunder.exe改成”notepad“就有用,不知道为什么?

18.java.lang.ArrayStoreException

当运行下列程序时出现了这样的错误:

importjava.util.ArrayList;

importjava.util.Collection;

importjava.util.Iterator;

importjava.util.List;

List<

Integer>

al=null;

//定义List对象

Collection<

cl=null;

//定义Collention对象

al=newArrayList<

//实例化List对象,只能是Integer

cl=newArrayList<

//实例化Collection对象,只能是Integer

al.add(0,34);

//在指定位置增加元素

al.add(1,343);

System.out.println(al);

cl.add(5654);

cl.add(3434);

System.out.println(cl);

al.addAll(cl);

//从Collection继承的方法,增加一组对象

Stringstr[]=al.toArray(newString[]{});

//指定的泛型类型

System.out.print("

指定数组类型"

//信息输出

for(inti=0;

i<

str.length;

i++){//输出字符串数组中的容

System.out.print(str[i]+"

、"

\n返回对象数组:

//信息输出

Objectobj[]=al.toArray();

//直接返回对象数组

obj.length;

i++){//循环输出对象数组容

Stringtemp=(String)obj[i];

//每一个对象都是String类型实例

System.out.print(temp+"

程序运行结果如下:

当你试图将错误类型的对象存储到一个对象数组时抛出的异常。

例如,以下代码可生成一个ArrayStoreException:

Objectx[]=newString[3];

x[0]=newInteger(0);

就这么简单。

怎么避免呢?

关键就是元素的容要正确。

你看你的代码:

privateObject[]objects;

....objects=newObjectSet[size];

很明显这里用父类的引用指向了子类的实现。

那么给每个元素赋值的时候只能付这个子类对象及这个子类的后代。

你又将OBJECT赋值给它,那么就必须向下转型。

把:

”List<

//实例化Collection对象,只能是Integer“语句中的Integer都改成String就可以了

18.addressalreadyinuse:

jvm_bind

在运行服务器和客户端程序的时候出现下面的错误:

可能运行错误的原因有:

通常出现Addressalreadyinuse:

JVM_Bind错误的可能性分析

I.就是当前端口已经有别的程序在占用着,所以要么把占用这个端口的程序关闭,要么重新换一个端口

II.端口号被占用,如果你有装oracle的话,有可能是oracle使用了8080端口,oracle安装后并且如果启动了OracleHttp服务会占用8080端口

III.我认为很可能是多启动了几次TOMCAT,在ECLIPSE下重复启动TOMCAT就会出现这个问题,你去调查一下看看是否是这个原因.

IV.如果不是windows操作系统,那么80端口已经被占用.如果是windows操作系统.请检查是否装有IIS.

V.启动了多个Tomcat。

我就是因为启动了两个Tomcat,所以才会报这样的错误,通常情况下,多次启动Tomcat或者非正常关闭Myeclipse,但是占用端口的进程没有关闭,也会出现这样的错误。

解决方法是关闭javaw.exe进程。

源程序是:

服务器端程序:

packagea;

import.*;

importjava.io.*;

publicclassServer{

privateServerSocketss;

privateSocketsocket;

privateBufferedReaderin;

privatePrintWriterout;

publicServer(){

//在服务器端指定端口10000创建队列长度为50的服务器端套接字

ss=newServerSocket(10000);

while(true){

//告诉服务器不停地等待,直到有客户端连接到该Serversocket指定的端口

//一旦有客户端通过网络向该端口发送正确的连接请求

//该方法就会返回表示服务器与客户端连接已建立的Socket对象

socket=ss.accept();

StringclientIP=socket.getInetAddress().getHostAddress();

StringclientPort="

:

+socket.getLocalPort();

System.out.println("

Aclientcomein!

IP:

+clientIP+clientPort);

//获得客户端发送的信息

in=newBufferedReader(newInputStreamReader(socket.getInputStream()));

Stringline=in.readLine();

System.out.pr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2