工作中,以C/C++开发为主,难免与其它服务和Web进行交换,Java开发不可缺少。又不想动用Eclipse大家伙,仅仅能自己动手编写脚本进行Java代码的编译和执行,期间遇到的一些问题,记录下来供自己和大家參考。
1)软件包不存在/软件包 javax.jms 不存在
这是因为javac编译时找不到javax.jms所在的软件包,因此将javax.jms所在的软件包增加到classpath中就可以,
如javac -classpath ./lib/j2ee.jar *.java
2)怎样将class文件打包成jar
jar cvmf manifest myjar.jar com
mainfest能够为空。com为要打包的class所在的文件夹。能够是多层,依据package的打包文件夹而定
3)JNI开发的class,在java.library.path中找不到dll库
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jwtp_api in java.library.path
则,须要将dll库所在的文件夹增加到path中就可以,如set path=dll所在文件夹;%path%
1)软件包不存在/软件包 javax.jms 不存在
这是因为javac编译时找不到javax.jms所在的软件包,因此将javax.jms所在的软件包增加到classpath中就可以,
如javac -classpath ./lib/j2ee.jar *.java
2)怎样将class文件打包成jar
jar cvmf manifest myjar.jar com
mainfest能够为空。com为要打包的class所在的文件夹。能够是多层,依据package的打包文件夹而定
3)JNI开发的class,在java.library.path中找不到dll库
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jwtp_api in java.library.path
则,须要将dll库所在的文件夹增加到path中就可以,如set path=dll所在文件夹;%path%
-Djava.library.path=dll所在文件夹,不知道为何不能够
4)JNI调用java类时。报错Exception in thread "main" java.lang.UnsatisfiedLinkError: wtpUpLoad
我的错误是。头文件和c文件里函数名称不符,
Java_com_tongtech_wtp_client_wtpDownLoad
c代码中
Java_com_tongtech_wtp_WtpClient_wtpDownLoad
头文件
当使用 JNI 从 Java 程序訪问本机代码时,您会遇到很多问题。您会遇到的三个最常见的错误是:
- 无法找到动态链接。
它所产生的错误消息是:java.lang.UnsatisfiedLinkError。这通常指无法找到共享库,或者无法找到共享库内特定的本机方法。
- 无法找到共享库文件。
当用 System.loadLibrary(String libname) 方法(參数是文件名称)装入库文件时,请确保文件名称拼写正确以及没有指定扩展名。还有,确保库文件的位置在类路径中,从而确保 JVM 能够訪问该库文件。
- 无法找到具有指定说明的方法。确保您的 C/C++ 函数实现拥有与头文件里的函数说明同样的说明。
5)import org.apache.commons.lang.StringUtils;失败
org.apache.commons.lang.StringUtils;所在的包是commons-lang-x.y.jar,当中x和y各自是主版本号、副版本号号。须要将合适版本号的jar增加到Eclipseproject中。我的jar就是commons-lang-2.4.jar,但导入确是commons-lang-2.1.jar,肯定找不到呀,改动成commons-lang-2.4.jar就可以。