1. 程式人生 > >javah提示找不到類檔案

javah提示找不到類檔案

dos命令列直接編譯錯誤場景如下:

.java檔案所處位置:E:\workspace\Trunk\Development\Source\Server\src\main\java\com\muyi\QTranslator.java,
在使用javah com.muyi.QTranslator提示找不到com.muyi.QTranslator類檔案,在嘗試了先使用javac編譯產生class檔案之後仍然提示找不到.

解決方案

在網上看了幾個分析的都是Android下的解決方案,講的大部分都是需要先切換到bin目錄,然後使用
javah生成標頭檔案,但是自己是用Eclipse開發的,根本找不到bin目錄,嘗試了幾次也都失敗。
最終找到了解決方案之後發現也是很簡單,只需要切換到.java檔案所處包的上級目錄,例如我自己的QTranslator.java處於package com.muyi;包下,則只需要切換到E:\workspace\Trunk\Development\Source\Server\src\main\java\這個目錄下就是包com.muyi的上層目錄即src\main\java\目錄,直接執行javah com.muyi.QTranslator即可。執行成功之後會在com包同級目錄下出現一個com_muyi_QTranslator.h的檔案。

Java程式中調用出錯場景

在Java程式中呼叫,控制檯提示Can’t find dependent libraries,就是提示找不到所依賴的庫檔案。程式中JNI調用出程式碼如下:

    public void initLibrary(String libPathName) throws Exception {
        System.load(libPathName);
    }

解決方案

這個問題主要是java.library.path這個路徑引起的,需要確保你所需的dll檔案的路徑在java.library.path中,在程式碼中可以增加System.getProperty(“java.library.path”)進行檢視具體的路徑資訊,其實java.library.path對應到計算機的PATH環境變數,只需要在高階系統設定–更改PATH環境變數即可,注意更改之後需要重啟Eclipse,當時我就說因為沒有重啟導致PATH變數沒有重新載入即剛更新的路徑沒有生效,花費了不少時間來嘗試,在重啟之後java.library.path包含所需的dll所處的路徑,程式也正常載入