摘自 http://blog.csdn.net/pony12/article/details/38456261
java開發中遇到的問題及解決方法(持續更新)
工作中,以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%
-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++ 函數實現擁有與頭文件中的函數說明相同的說明。
(摘自IBM中文網) http://bbs.csdn.net/topics/100065889 hengxxh
5)import org.apache.commons.lang.StringUtils;失敗
org.apache.commons.lang.StringUtils;所在的包是commons-lang-x.y.jar,其中x和y分別是主版本、副版本號,需要將合適版本的jar加入到Eclipse工程中。我的jar就是commons-lang-2.4.jar,但導入確是commons-lang-2.1.jar,肯定找不到呀,修改成commons-lang-2.4.jar即可。