㈠ javah是什麼意思
Javah:產生可以調用Java過程的C過程,或建立能被Java程序調用的C過程的頭文件。
㈡ JDK怎樣打開
工具/材料:以win10系統、jdk1.8.0_102為例。
1、首先在桌面上,點擊「此電腦」圖標。

㈢ 關於java JNI 生成.h文件
安裝好JDK的、在include目錄裡面,,,,,,如JDK1.6,在JDK1.6-30\include這個目錄裡面
㈣ javah的問題
C:\Program Files\Java\jdk1.6.0_15\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_15\lib\tools.jar這兩個環境變數要放在classpath裡面的
㈤ Java如何獲取文件的創建時間
能不能換個思路~~~汗啊~!好像用java的函數只能取得lastModified()有一個比較笨的方法
Process p=Runtime.getRuntime().exec("dir startup.bat /t -c");
然後取得p的輸出信息就可以得到創建時間了!上面的例子我是得到tomcat的startup.bat這個文件的創建時間,如果你想得到其它文件的創建時間就可以將startup.bat換成其它文件名!study and mark ^_^如果用dir, 取得創建時間的參數是/TC路過學習ing幫您頂java是用native來獲取操作系統的支持,從而對文件進行操作。
具體實現類是
java.io.FileSystem
這個類是私有的只能在jdk內部使用,由於這個類沒有提供文件時間創建的介面,你也就沒有辦法用純java來獲得這一個功能(但願不是這樣)。
有一個簡單的方法是自己調用系統函數,或者乾脆調用各C函數
先寫各本地類訪問方法
class MyFileSystem{
public native void getCreatFileTime(File f);static {System.loadLibrary(" ");}
public static void main(String[] args) {
new HelloWorld().getCreatFileTime();}}編譯本文件然後執行 javah,便會自動產生頭文件 MyFileSystem.h
函數的具體實現如下:
#include
#include "MyFileSystem.h"
#include
JNIEXPORT double JNICALL
Java_MyFileSystem_displayHelloWorld(JNIEnv *env, jobject obj){//在這里調用C函數
double time=getFileCreatTime_IN_C(obj)
return time;}高手如雲,我心忐忑
奮發圖強~高手如雲,我心忐忑奮發圖強~me too,高手如雲,我心忐忑奮發圖強~me too,too還有可以復制java.io.FileSystem及相關類的源代碼,把所有東西成public的,這樣總可以用了吧,
當然把類名也改掉。。。。。頂!
Study!Up!!!頂一下!
支持upFile f = new File("d:\\a.txt");
Date date = new Date();
long L = date.getTime();
f.setLastModified(L);
以上個函數可以設置文件的最後修改時間,以及設置文件為「只讀」屬性頂!!!
㈥ 如何用java調用c語言編譯器實現在線編譯c語
要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}
編譯這個類,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了
㈦ 菜鳥問題: jdk, jar, javaw, javac, javah分別是什麼
jdk 是java 開發工具包。 簡單來說 ,是開發java 的一個必備工具。
jar 是 java 開發完成之後,打包的結果 類似 程序的 .dll 或者 .exe
javaw 是java 運行環境中的 一個工具, 用於啟動 java 或者 jar 程序。 其作用是隱藏控制台的方式, 運行java 程序。
javac 是java 開發工具包(jdk) 其中的一個工具, 用於編譯 java 文件, 產生可運行的 .class java 位元組碼文件。\
javah 是java語言 C 頭文件和 stub 文件生成器。 主要用於 java做本地調用的時候。 產生C語言的頭文件。
javaw 多數是用於運行 Swing 。 或者不需要控制台的可視化程序。 比如。運行 jar 文件。
javaw -jar jar文件名稱
如果運行java 文件。 只要編譯好產生.class 位元組碼文件
然後
javaw .class文件名
調用方式,和java 命令是一樣的。 區別只是不產生控制台。
㈧ jni中用javah生成的頭文件有什麼作用
Java中本地方法(native修飾)可通過javah來生成頭文件,你可以在這個頭文件里實現java中定義的方法,然後你需要將生成的頭文件編譯,如DOS下編譯得到動態連接庫存XXX.dll,你在使用JAVA定義的那個本地方法時需要載入這個dll庫然後你就可以像調其它JAVA一樣調你定義的那個類的本地方法。對於已經編譯過的頭文件,你刪除了也不會有什麼影響的,只要你的dll文件還在就行!
純手工,望採納!
㈨ 如何對class文件使用javah命令
這是正常的,安裝完JDK後,在DOS界面中輸入「JAVAC」或「java」命令後如果會顯示你上面截圖中的內容,這就表明你的環境變數已經成功地配置完成了,而上面截圖中的內容就是javac和java命令的使用方法,JDK常用的命令行工具如下:
javac:Java編譯器,Java程序的編譯工具,用來將Java程序的源文件編譯成位元組碼文件,也就是.class文件。
java:Java解釋器,解釋和執行已經轉換成位元組碼的Java應用程序。
jdb:Java調試器,可以設置斷點調試Java程序,還可以檢查變數,逐行執行程序。
javap:Java反匯編器,顯示編譯類文件中的方法和變數,還可以顯示位元組代碼的含義。
javadoc:API文檔生成器,可以生成HTML文檔。
appletviewer:Applet小應用程序瀏覽器,用來解釋並執行已經轉換成位元組碼的小應用程序。
jar:JAR文件管理器,可以將類文件打包成一個文件。
編寫並運行Java應用程序的三個步驟:
1 編寫Java應用程序代碼
2 進入MS-DOS界面進行代碼的編譯。編譯的時候首先使用DOS中的cd命令,進入到代碼所在的目錄下。比如編寫好的代碼Hello.java放到了C:\MyJava目錄下,就可以使用下面命令了完成了:
cd C:\MyJava
javac Hello.java
3 最後就是執行 java Hello 了。
㈩ 如何在eclipse 中配置javah
1
在進行安裝配置maven工具的時候,首先就需要對maven安裝目錄下有個config文件夾,在文件夾下有settings.xml文件。settings裡面就是配置maven工程的一些本地倉庫地址(項目使用的某些jar下載並且安裝到本機中),遠程倉庫(如果本機沒有需要的jar,則從遠程獲取。)的配置等信息。
2
打開%M2_HOME%/conifg/settings.xml文件,在文件中可以看到localRepository配置的就是本地倉庫,本地倉庫地址的目錄最好是全英文格式,不要包含漢字空格等其他特殊字元。
3
在配置文件中,mirror表示的是訪問鏡像。如果本地倉庫沒有項目所需要的jar包,就會通過這里的mirror配置的url地址進行從遠程倉庫獲取需要的jar,同事將這個jar添加到本地目錄中,當再次使用的時候,就會直接從本地倉庫中直接獲取。
4
maven在eclipse中的配置。首先打開eclipse開發工具,eclipse中的各種配置文件一般都是通過window窗口進行設置。打開導航工具欄上的window即可對工作空間進行設置。
5
打開window之後,可以看到很多功能的設置,新建window窗口、配置顯示信息、打開window其他功能設置等。這里我們對maven地址配置,選擇最後一個preferences選項。
6
在打開的配置項頁面中,在輸入框中,可以輸入maven關鍵字,快速定位到maven文件夾,在maven文件夾下找到User Settings,主要是配置用戶設置。
7
在查找用戶配置user settings的時候,也可以通過依次展開文件夾的方式,直接點擊選擇maven文件夾,在maven文件夾下就可以看到用戶設置選項。
8
點擊user settings在用戶配置界面中,有兩個設置框,一個是Global Settings(全局配置信息)和User Settings(只針對這個工作空間進行設置)。根據自己的實際情況設置相應的settings文件即可。
9
點擊用戶設置右側的Browe..瀏覽按鈕,找到本機安裝的maven工具下的settings.xml文件,這樣就配置好了用戶設置文件,一次點擊update settings(如果工程下有maven項目自動更新)--apply應用--Ok確定即可完成配置。
多圖