當前位置:首頁 » 編程語言 » java文件調用

java文件調用

發布時間: 2024-12-07 14:04:08

java 調用so文件

在命令行中運行如下命令:
javac HelloWorld.java
在當前文件夾編譯生成HelloWorld.class。
生成HelloWorld.h
在命令行中運行如下命令:
javah -jni HelloWorld
在當前文件夾中會生成HelloWorld.h。打開HelloWorld.h將會發現如下代碼:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
該文件中包含了一個函數Java_HelloWorld_print的聲明。這裡麵包含兩個參數,非常重要,後面講實現的時候會講到。
實現HelloWorld.c
創建HelloWorld.c文件輸入如下的代碼:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
}
注意必須要包含jni.h頭文件,該文件中定義了JNI用到的各種類型,宏定義等。
另外需要注意Java_HelloWorld_print的兩個參數,本例比較簡單,不需要用到這兩個參數。但是這兩個參數在JNI中非常重要。
env代表java虛擬機環境,Java傳過來的參數和c有很大的不同,需要調用JVM提供的介面來轉換成C類型的,就是通過調用env方法來完成轉換的。
obj代表調用的對象,相當於c++的this。當c函數需要改變調用對象成員變數時,可以通過操作這個對象來完成。
編譯生成libHelloWorld.so
linux下執行如下命令來完成編譯工作:
cc -I/usr/lib/jvm/java-6-sun/include/linux/
-I/usr/lib/jvm/java-6-sun/include/
-fPIC -shared -o libHelloWorld.so HelloWorld.c
在當前目錄生成libHelloWorld.so。注意一定需要包含Java的include目錄(請根據自己系統環境設定),因為Helloworld.c中包含了jni.h。
另外一個值得注意的是在HelloWorld.java中我們LoadLibrary方法載入的是
「HelloWorld」,可我們生成的Library卻是libHelloWorld。這是Linux的鏈接規定的,一個庫的必須要是:lib+庫
名+.so。鏈接的時候只需要提供庫名就可以了。
運行Java程序HelloWorld
大功告成最後一步,驗證前面的成果的時刻到了:
java HelloWorld
如果你這步發生問題,如果這步你收到java.lang.UnsatisfiedLinkError異常,可以通過如下方式指明共享庫的路徑:
java -Djava.library.path='.' HelloWorld
當然還有其他的方式可以指明路徑請參考《在Linux平台下使用JNI》。
我們可以看到久違的「Hello world!」輸出了。

❷ java中如何調用其他java文件

JAVA中方法的調用主要有以下幾種:
1.非靜態方法
非靜態方法就是沒有 static 修飾的方法,對於非靜態方法的調用,是通過對 象來調用的;

2.調用靜態方法
靜態方法就是用 static 修飾的方法,靜態方法的調用是通過類名來調用的;

3.方法與方法之間的調用
方法與方法之間的調用,主要是在一個方法內部如何調用其他方法。
(1)靜態方法內部調用其他方法
如果在本類當中,靜態方法可以直接調用靜態方法,

❸ java調用bat文件 如何獲取結果

Runtime.getRuntime().exec("*.bat").getInputStream()
取得InputStream後再列印輸出。
Runtime.getRuntime().exec("*.bat").exitValue()可以取得運行結果。

❹ java中如何調用其他java文件中的方法

如果另一個類中的那個方法是私有的話,就不能直接調用到,如果是其他類型的話看情況,如果是靜態的(static)話,直接用類名可以調用到,如果是非靜態的,就需要利用另一個類的實例(也就是用那個類生成的對象)來調用。如:

class A{

public static void a(){}

public void b(){}

}

public class B{

public static void main(String[] args){

A.a();//靜態

new A().b();//非靜態

}

}

(4)java文件調用擴展閱讀

在Boss裡面實現對Employee的調用,

Employee.java:

packagepayroll2;

publicclassEmployee {

publicvoidmove(){

System.out.print("this is employee");

}

}

如果想實現對包的調用,可使用import關鍵字,然後再對調用類的實例化調用裡面的方法

Boss.java:

packagepayroll;

importpayroll2.Employee;

publicclassBoss {

publicstaticvoidmain(String args[]) {

newEmployee().move();

}

}

❺ .bat調用java文件的命令

加上Java環境設置:set JAVA_HOME=c\JAVA7
然後運行時的命令加上:%JAVA_HOME%\bin\java Send

熱點內容
編程貓大事件 發布:2024-12-29 19:13:53 瀏覽:180
wpa2密碼是什麼 發布:2024-12-29 19:01:10 瀏覽:815
積分商城系統源碼 發布:2024-12-29 18:59:31 瀏覽:963
拖拽建站系統源碼 發布:2024-12-29 18:51:58 瀏覽:262
初中數學演算法 發布:2024-12-29 18:50:22 瀏覽:450
電腦遠程映射伺服器 發布:2024-12-29 18:50:21 瀏覽:955
紐西蘭訪問學者 發布:2024-12-29 18:40:39 瀏覽:261
建立100個文件夾 發布:2024-12-29 18:33:11 瀏覽:330
小米手機怎麼投屏到安卓車機 發布:2024-12-29 18:32:25 瀏覽:373
如何接收伺服器ip地址 發布:2024-12-29 18:26:37 瀏覽:334