本文目录一览:
- java中文件上传报如下错误,是什么原因?
- eclipse导入的例子java文件出现错误,打开projiect.properties出现错误
- java读取文件,报找不到文件错误,我写的路径跟报错的路径不一样,怎么回事?
- java中import*导入包报错;
- 关于Java的报错
java中文件上传报如下错误,是什么原因?
然后在百度和谷歌上各种搜索,大多数认为是超时而断开连接。对于解决办法一般给的不够全面,现综合给出如下:
(1)首先,上传页面上面的 form 标签要设 enctype="multipart/form-data"
参数。
(2)修改 Tomcat 配置文件 server.xml
,找到类似于下面配置:
<Connector port="8086" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
将上面的参数 disableUploadTimeout
值改为 false
即可。
(3)上边(1)是我的程序中已经设置的,修改了(2)所述的配置后依然不能运行,后来又修改了 Tomcat 配置文件 server.xml
中的另外一处:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
也在里边加入了 disableUploadTimeout="false"
一句。
用了以上方法仍然不能解决,后来想到可能是服务器外加了防火墙或者限制了上传文件的大小之类的,联系网络中心进行相关设置即可。
eclipse导入的例子java文件出现错误,打开projiect.properties出现错误
打开 project.properties
出现错误是因为文件编码问题导致。
依次选择:
菜单 —— Preferences —— General —— Content Types —— Text —— Java Properties File,设置 Default encoding,把下面的 ISO-8859-1
改为 UTF-8
或者 GBK
(推荐 UTF-8
),然后点击 Update。
java读取文件,报找不到文件错误,我写的路径跟报错的路径不一样,怎么回事?
就是路径的问题,不一样是因为编译时处理成虚拟机认识的。文件根本没读取成功,要么没这文件要么路径写的有问题。
java中import*导入包报错;
注:java 文件编译后产生 class 文件,如果删除 T.java
而没有删除 T.class
文件,则可以通过 import。
你第一次编译所有文件时没有通过的原因可能是:先编译了 Text.java
,这时没有 T.class
文件所以报错。
第二次编译通过原因:T.class
文件存在所以能编译 import。
关于Java的报错
UnsatisfiedLinkError
在把本机调用链接到对应的本机定义时,类装入器扮演着重要角色。如果程序试图装入一个不存在或者放错的本机库时,在链接阶段的解析过程会发生 UnsatisfiedLinkError
。JVM 规范指定 UnsatisfiedLinkError
是:
对于声明为 native
的方法,如果 Java 虚拟机找不到和它对应的本机语言定义,就会抛出该异常。
当调用本机方法时,类装入器会尝试装入定义了该方法的本机库。如果找不到这个库,就会抛出这个错误。
清单 6. UnsatisfiedLinkError.java
public class UnsatisfiedLinkErrorTest {
public native void call_A_Native_Method();
static {
System.loadLibrary("myNativeLibrary");
}
public static void main(String[] args) {
new UnsatisfiedLinkErrorTest().call_A_Native_Method();
}
}
这段代码调用本机方法 call_A_Native_Method()
,该方法是在本机库 myNativeLibrary
中定义的。因为这个库不存在,所以在程序运行时会发生以下错误:
The java class could not be loaded. java.lang.UnsatisfiedLinkError:
Cant find library myNativeLibrary (myNativeLibrary.dll)
in sun.boot.library.path or java.library.path
sun.boot.library.path=D:/sdk/jre/bin
java.library.path= D:/sdk/jre/bin
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2147)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2006)
at java.lang.Runtime.loadLibrary0(Runtime.java:824)
at java.lang.System.loadLibrary(System.java:908)
at UnsatisfiedLinkErrorTest.clinit(UnsatisfiedLinkErrorTest.java:6)
本机库的装入由调用 System.loadLibrary()
方法的类的类装入器启动 —— 在清单 6 中,就是 UnsatisfiedLinkErrorTest
的类装入器。根据使用的类装入器,会搜索不同的位置:
- 对于由 bootstrap 类装入器装入的类,搜索
sun.boot.library.path
。 - 对于由扩展类装入器装入的类,先搜索
java.ext.dirs
,然后是sun.boot.library.path
,然后是java.library.path
。 - 对于由系统类装入器装入的类,搜索
sun.boot.library.path
,然后是java.library.path
。 在清单 6 中,UnsatisfiedLinkErrorTest
类是由系统类装入器装入的。要装入所引用的本机库,这个类装入器先查找sun.boot.library.path
,然后查找java.library.path
。因为在两个位置中都没有需要的库,所以类装入器抛出UnsatisfiedLinkageError
。
java.lang.UnsatisfiedLinkError
出现这种错误的原因一般是 Java 虚拟机找不到声明为 native
方法的本地语言定义时,出现的错误。在我的理解过程中我一般都认为是由于导入 dll 或者导入 lib 文件不正确导致的。有些需要静态导入就没有问题(即在前面加 static
来导入 lib 文件),如果是不加 static
导入也就是动态导入的时候,那么需要添加 catch
的抛出异常来解决,例如:
try {
System.loadLibrary("vtkCommonJava");
System.loadLibrary("vtkFilteringJava");
System.loadLibrary("vtkIOJava");
System.loadLibrary("vtkImagingJava");
System.loadLibrary("vtkGraphicsJava");
System.loadLibrary("vtkRenderingJava");
} catch (Throwable e) {
System.out.println("The load problem");
}
这种方式来判断,或者直接在类前面添加:
static {
System.loadLibrary("vtkCommonJava");
System.loadLibrary("vtkFilteringJava");
System.loadLibrary("vtkIOJava");
System.loadLibrary("vtkImagingJava");
System.loadLibrary("vtkGraphicsJava");
System.loadLibrary("vtkRenderingJava");
}
关于编写 JNI 时发生的 UnsatisfiedLinkError
错误
这个错误也让我郁闷了半天,现在我把它写出来,可以让大家少走点弯路。一般这个错误有两种:
UnsatisfiedLinkError: dll名
,那说明你没有把 dll 放到合适的位置,一般就和要调用原生函数的类放在一起,当然前提是你成功的生成 dll 了。UnsatisfiedLinkError: 方法名
,这个时候你其实 dll 已经成功生成了,而且位置也正确,它的意思就是你没有定义那个函数,你可能会说,我明明定义了,其实当你发现问题所在,你只能自虐了,肯定是在 C 文件中定义函数时有些字母大小写错了,因为其他地方是自动生成的,不会出错。尤其是直接从网上拷贝源程序时经常发生这种问题,有些作者不负责任,把有错误的程序也贴上去。 转自: