純java開發的軟體在linux下面也可以應用自如。那麼首先就需要配置好linux下的java環境,具體說來,就是配置jdk環境變數。
介紹在linux下配置jdk環境變數的幾種常用方法。
首先在linux下安裝jdk,如果出現提示許可權不夠(且root下也提示許可權不夠),可用#ls -l filename命令查看一下,如果顯示類似如:
-rw-rw-rw- 1 root root ….
則表示任何用戶都沒有可執行許可權(即使是root用戶)。
解決方法:
#chmod a+x filename
這樣,安裝好後,就可以接下來進行環境變數的配置了。這里給出三種可選方法:
一、修改/etc/profile文件
當本機僅僅作為開發使用時推薦使用這種方法,因為此種配置時所有用戶的shell都有權使用這些環境變數,可能會給系統帶來安全性問題。
用文本編輯器打開/etc/profile,在profile文件末尾加入:
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
重新登錄即可。
二、修改.bashrc文件
這種方法更為安全,它可以把使用這些環境變數的許可權控制到用戶級別,如果需要給某個用戶許可權使用這些環境變數,只需要修改其個人用戶主目錄下的.bashrc文件就可以了。
用文本編輯器打開用戶目錄下的.bashrc文件,在.bashrc文件末尾加入:
set JAVA_HOME=/usr/share/jdk1.5.0_05
export JAVA_HOME
set PATH=$JAVA_HOME/bin:$PATH
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
重新登錄。
三、直接在shell下設置變數
不推薦使用這種方法,因為換個shell,該設置就無效了。這種方法僅僅是臨時使用,以後要使用的時候又要重新設置,比較麻煩。
只需在shell終端執行下列命令:
export JAVA_HOME=/usr/share/jdk1.5.0_05
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意:
1.要將 /usr/share/jdk1.5.0_05jdk 改為jdk安裝目錄
2. linux下用冒號」:」來分隔路徑
3. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變數的值在設置環境變數時特別要注意不能把原來的值給覆蓋掉了。
4. CLASSPATH中當前目錄」.」不能丟掉。
5. export是把這三個變數導出為全局變數。
6. 大小寫必須嚴格區分。
⑵ JAVA如何修改系統環境變數(不是配環境變數)
問HelloWorld問題的人實在是太多了,而且經常都以逗問一個最簡單的問題地開頭。其
實回想一下,自己也是從這個階段過來的,說一句逗你好地,真的是一個最簡單的問題
嗎看...//think 好了,言歸正傳,let\'s say \"HelloWorld!\" in Java...
首先,我們要假設一下我們的平台是Windows+JDK(Linux環境下也差不多)。這個環境
是相當普遍、基礎和入門的。確定已經正確安裝JDK了,下一步是小心翼翼地敲入某本教
程上的HelloWorld源碼,存檔,然後編譯,javac ...問題來了:
* 錯誤1:
\'javac\' 不是內部或外部命令,也不是可運行的程序或批處理文件。
(javac: Command not found)
產生的原因是沒有設置好環境變數path。Win98下在autoexce.bat中加入
path=%path%;c:\\jdk1.2\\bin,Winxp下則控制面板->系統->高級->環境變數->系統變
量...看到了看雙擊Path,在後面加上c:\\jdk1.2\\bin。當然我們假設JDK安裝在了
c:\\jdk1.2目錄下(有點唐僧了看)...似乎還要重啟系統才起作用...(//知道了!//西
紅柿)
好,再試試!javac HelloWorld
* 錯誤2:
HelloWorld is an invalid option or argument.
拜託,給點專業精神,java的源程序是一定要存成.java文件的,而且編譯時要寫全
.java呀。
OK, javac HelloWorld.java (這回總該成了吧看)
* 錯誤3:
HelloWorld.java:1: Public class helloworld must be defined in a file called
\"HelloWorld.java\".
public class helloworld{
^
這個問題嘛,是因為你的類的名字與文件的名字不一致。(誰說的,明明看到人家都有
這樣寫的 ;( ) OK,准確地說,一個Java源程序中可以定義多個類,但是,具有public
屬性的類只能有一個,而且要與文件名相一致。還有,main方法一定要放在這個public
的類之中,這樣才能java(運行)這個類。另外一點是Java語言裡面是嚴格區分大小寫
的,初學者要注重呀。像上例中 helloworld 與 HelloWorld 就認為是不一樣,因而...
oh... 好,改好了,嘻嘻... javac HelloWorld.java
...(咦,怎麼什麼也沒有呀看)//faint 這就是編譯通過了!看看是不是多了一個
HelloWorld.class ?
(hehe..按書上教的:) java HelloWorld (!! 這個我知道,不是java HelloWorld.class
喲)
* 錯誤4:
Exception in thread \"main\" java.lang.NoClassDefFoundError: HelloWorld
呵呵,這個嘛,就是聞名的類路徑(classpath)問題啦。實際上,類路徑是在編譯過程就
涉及的Java中的概念。classpath就是指明去哪裡找用到的類,就這么簡單。由於我們的
HelloWorld沒用到其它的(非java.lang包中的)類,所以編譯時沒碰到這個問題。運行
時呢,就要指明你的類在哪裡了。解決方法嘛,可以用下面的命令運行:
java -classpath . HelloWorld
逗.地就代表當前目錄。當然這樣做有點麻煩(是逗太麻煩地!),我們可以在環境變數
中設置默認的classpath。方法就照上述設置path那樣。將classpath設為:
classpath=.;c:\\jdk1.2\\lib\\dt.jar;c:\\jdk1.2\\lib\\tools.jar 後面的兩個建議也設上
,以後開發用的著。
java -classpath . HelloWorld(再不出來我就不學java了)
* 錯誤5:
Exception in thread \"main\" java.lang.NoSUChMethodError: main
(//咣當)別,堅持住。看看你的代碼,問題出在main方法的定義上,寫對地方了嗎,
是這樣寫的嗎:
資料引用:
⑶ java文件無法運行 環境變數怎麼改
:驗證安裝是否成功
1 先驗證jdk是否安裝成功,通過DOS命令,然後分別輸入javac和java,如果正常顯示一些內容,說明安裝成功
2,
* C:配置方式
* a:xp系統
* 右鍵點擊桌面計算機→選擇屬性→選擇高級選項卡→點擊環境變數→下方系統變數中查找path→雙擊path→將jdk安裝目錄下的bin目錄添加到最左邊並添加分號。
* b:win7/win8系統
* 右鍵點擊桌面計算機→選擇屬性→選擇高級系統設置→選擇高級選項卡→點擊環境變數→下方系統變數中查找path→雙擊path→將jdk安裝目錄下的bin目錄添加到最左邊並添加分號。
* path配置的是可執行的文件.exe,配置後可以在不同的盤符下訪問path路徑下的可執行文件
C:\ProgramData\Oracle\Java\javapath;%Java_Home%\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS ........
* A:先配置JAVA_HOME
* B:再修改path
* C:最後說一下path是有先後順序關系的
⑷ 電腦JAVA環境變數如何設置
(1)、 計算機右擊屬性進入下圖
⑸ java怎麼改環境變數
進行java開發,首先要安裝jdk,安裝了jdk後還要進行環境變數配置:
1、下載jdk(http://java.sun.com/javase/downloads/index.jsp),我下載的版本是:jdk-6u14-windows-i586.exe
2、安裝jdk-6u14-windows-i586.exe
3、配置環境變數:右擊「我的電腦」-->"高級"-->"環境變數"
1)在系統變數里新建JAVA_HOME變數,變數值為:C:\Program Files\Java\jdk1.6.0_14(根據自己的安裝路徑填寫)
2)新建classpath變數,變數值為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
3)在path變數(已存在不用新建)添加變數值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意變數值之間用「;」隔開)
4、「開始」-->「運行」-->輸入「javac」-->"Enter",如果能正常列印用法說明配置成功!
補充環境變數的解析:
JAVA_HOME:jdk的安裝路徑
classpath:java載入類路徑,只有類在classpath中java命令才能識別,在路徑前加了個"."表示當前路徑。
path:系統在任何路徑下都可以識別java,javac命令。
⑹ 關於java環境變數修改後的問題
估計你把Path變數以前的值給弄沒了,比如沒設之前
Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem(一般就是這個)。
針對java要把它改為
Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin
而不是Path=%Java_Home%\bin
你把前面少的那部分給加上應該就可以了!
⑺ Java環境變數怎麼配置Java環境變數設置教程
Java環境變數怎麼設置?Java語言擁有跨平台的特性,它編譯的程序能夠運行在多種操作系統平台上,可以實現“一次編寫,到處運行”的強大功能。但是Java需要自己手動配置環境變數,這對於Java新手來說是個不小的難題。接下來,小編就教大家Java環境變數設置方法。
Java環境變數設置所需工具:
JDK
1.7
安裝包
Java環境變數設置步驟:
想要成功配置Java的環境變數,那肯定就要安裝JDK,才可以開始配置。
1.安裝JDK
向導進行相關參數設置。如圖:
4.選擇安裝的路徑,可以自定義,也可以默認路徑。如圖:
5.安裝成功。
成功安裝之後,進行測試是否真的成功安裝,點擊"開始"----"運行"----輸入"CMD",在命令提示符裡面輸入“Java
-version”並按回車鍵,出現下圖,即為安裝成功。如圖:
6.下面開始配置環境變數,右擊"我的電腦"----"屬性"----"高級"----"環境變數",如圖:
2.選擇需要安裝的可選功能。如下圖:
3.正在安裝程序的相關功能。如圖:
7.選擇"新建系統變數"----彈出“新建系統變數”對話框,在“變數名”文本框輸入“JAVA_HOME”;在“變數值”文本框輸入JDK的安裝路徑(也就是步驟5的文件夾路徑),單擊“確定”按鈕。如圖:
8.在“系統變數”選項區域中查看PATH變數,如果不存在,則新建變數
PATH,否則選中該變數,單擊“編輯”按鈕,在“變數值”文本框的起始位置添加“%JAVA_HOME%bin;%JAVA_HOME%jrebin;”或者是直接“%JAVA_HOME%bin;”,單擊確定按鈕。如圖:
9.在“系統變數”選項區域中查看CLASSPATH
變數,如果不存在,則新建變數CLASSPATH,否則選中該變數,單擊“編輯”按鈕,在“變數值”文本框的起始位置添加“.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;”。如圖:
10.現在測試環境變數的配置成功與否。在DOS命令行窗口輸入“JAVAC”,輸出幫助信息即為配置正確。如圖:
小編提醒:在進行“變數值”編輯時記得不要漏掉最後的“;”符號。
⑻ java環境變數怎麼設置啊
首先介紹一下環境變數的設置方法:
(這里以jdk1.6來安裝,其他版本一樣)在把jdk安裝到計算機中之後,我們來進行設置使java環境能夠使用。
首先右鍵點我的電腦。打開屬性。然後選擇「高級」裡面的「環境變數」,在新的打開界面中的系統變數需要設置三個屬性「JAVA_HOME」、「path」、「classpath」,其中在沒安裝過jdk的環境下。path屬性是本來存在的。而JAVA_HOME和classpath是不存在的。
點「新建」,然後在變數名寫上JAVA_HOME,顧名其意該變數的含義就是java的安裝路徑,呵呵,然後在變數值寫入剛才安裝的路徑「C:\jdk1.6」。(註: 如果安裝的路徑不是磁碟C或者不是在jdk1.6這個文件夾,可對應修改。以下文字都是假定安裝在C:\jdk1.6裡面。)
其次在系統變數裡面找到path,然後點編輯,path變數的含義就是系統在任何路徑下都可以識別java命令,則變數值為「.;%JAVA_HOME%\bin」,(其中「%JAVA_HOME%」的意思為剛才設置JAVA_HOME的值),也可以直接寫上「C:\jdk1.6\bin」 最後再點「新建」,然後在變數名上寫classpath,該變數的含義是為java載入類(class or lib)路徑,只有類在classpath中,java命令才能識別。其值為「.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar (要加.表示當前路徑)」,與相同「%JAVA_HOME%有相同意思」 也可以這么寫「.;C:\jdk1.6\lib\dt.jar;C:\jdk1.6\lib\toos.jar (要加.表示當前路徑)」。
以上三個變數設置完畢,則按「確定」直至屬性窗口消失,下來是驗證看看安裝是否成功。先打開「開始」->「運行」,打入「cmd」,進入dos系統界面。然後打「java -version」,如果安裝成功。系統會顯示java version jdk"1.6.0"。 確保安裝在C盤文件名為jdk1.6,環境變數直接復制就可以了 ,在dos界面中輸入javac來查看該命令是否合法,同樣輸入java來查看該命令是否合法
這樣環境變數就設置好了
java的環境變數是這樣設置的,其實java_home不用設都行,只設path和classpath另外你要測試 是否裝好,javac是編譯指令,編譯要有源文件.java才行啊。java 是運行指令,運行的是.class文件哦。例如,javac abc.java。當然了你cmd你要進入你 源文件的目錄才行。使用DOS cd命令即可,關於dos命令你可以去查些資料。
還有什麼問題,你補充吧
⑼ java設置環境變數
環境變數是一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如path,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。用戶通過設置環境變數,來更好的運行進程。
JDK
方法/步驟
首先下載安裝JDK安裝包,安裝過程中注意安裝到其他盤,不要安裝到C盤就好。
打開我的電腦--屬性--高級--環境變數 :
新建系統變數JAVA_HOME 和CLASSPATH 變數名:JAVA_HOME 變數值:C:Program FilesJavajdk1.7.0變數名:CLASSPATH 變數值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;
其中變數值為你自己安裝jdk的文件目錄這里要注意。
選擇「系統變數」中變數名為「Path」的環境變數,雙擊該變數,把JDK安裝路徑中bin目錄的絕對路徑,添加到Path變數的值中,並使用半形的分號和已有的路徑進行分隔。 變數名:Path 變數值:%JAVA_HOME%bin;%JAVA_HOME%jrebin;這是java的環境配置,配置完成後直接啟動eclipse,它會自動完成java環境的配置
現在測試環境變數的配置成功與否。在DOS命令行窗口輸入「JAVAC」,輸出幫助信息即為配置正確。如圖:
⑽ 如何用Java程序改變系統環境變數
最近在做一個項目的時候,遇到一個要在java程序中改變linux的PATH環境變數的問題。我們知道在linux中PATH環境變數保存在用戶根目錄下的「.bashrc」和「.bash_profile這兩個隱藏文件中。用戶登錄的過程中便會把這兩個文件中的PATH路徑記錄的該用戶的shell中。如果用戶已經登錄,這時可通過命令 export PATH=add_path:$PATH來增加一個路徑為add_path的路徑。但通過此種方式增加的PATH路徑只在當前shell中有效(也就是說,當用戶通過另一個shell登錄時,PATH又變成了原來的值)。在windows中用戶已經登錄的情況下則是通過命令set來更改環境變數的。
Java語言是一門跨平台的語言,具有一次編寫到處運行的特點。在java的1.0版本中有System.getenv(String key)可以來取得操作系統的環境變數,但由於getenv()具有與操作系統緊密相關的特性,這與java的跨平台的跟本特徵相沖突,所以在java1.2中該方法被不推薦使用。而程序員在編程的過程中經常需要用到getenv(),所以在java1.5中getenv()又重新回來了。雖然可以通過getenv()來取得系統的環境變數,但是卻沒有與getenv()相對應的setenv()函數來改變系統的環境變數。
C語言是一門與平台相關的語言,在多年的發展中積累了數量相當可觀的庫函數,在stdlib.h函數庫中就有getenv(參數省略)與setenv(參數省略)來獲取和改變系統的環境變數,這就給我們一個提示:能不能在java語言中調用C語言的函數庫?JNI(java本地介面)正給了我們這樣一個選擇。
1.首先生成ChangeEnv.java文件
/**
* @author sgh
* @version 1.0.0 06/07/21
*/
public class ChangeEnv {
/**
* @param args
*/
static {
try{
System.loadLibrary("change_env");//聲明欲載入的動態鏈接庫
}
catch(UnsatisfiedLinkError e ){
System.err.println("Can not load library "+e.toString());
}
}
public native void setEnv(String name ,String value, int replace);//聲明一個本地調用介面
}
說明:
1. 動態鏈接庫在windows中是.dll文件,在linux中則是.so文件,但在System.loadLibrary("change_env")中不需要把後綴寫出 ,程序會自己判斷。
2. 本地介面聲明方式為在普通函數前加native關鍵字
2. 編譯java文件 :Javac ChangeEnv.java
3. 使用命令 javah ChangeEnv 生成ChangeEnv.h文件(ChangeEnv.h文件由程序自動生成,程序員不需要作任何改動)
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ChangeEnv */
#ifndef _Included_ChangeEnv
#define _Included_ChangeEnv
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: ChangeEnv
* Method: setEnv
* Signature: (Ljava/lang/String;Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_ChangeEnv_setEnv
(JNIEnv *, jobject, jstring, jstring, jint);
#ifdef __cplusplus
}
#endif
#endif
說明:
1.JNIEXPORT void JNICALL Java_ChangeEnv_setEnv
(JNIEnv *, jobject, jstring, jstring, jint)是本地介面函數的聲明需要在.cpp文件中實現它
4.編寫ChangeEnv.cpp
#include"ChangeEnv.h"
#include<stdio.h>
#include<stdlib.h>
//與ChangeEnv.h中函數聲明相同
JNIEXPORT void JNICALL Java_ChangeEnv_setEnv(JNIEnv * env, jobject obj, jstring name, jstring value, jint replace)
{
////從instring字元串取得指向字元串UTF編碼的指針
const char * name_char =(const char *) env->GetStringUTFChars(name ,JNI_FALSE);
const char * value_char =(const char *) env->GetStringUTFChars(value ,JNI_FALSE);
//實際調用的C庫函數
setenv(name_char,value_char,replace);
//通知虛擬機本地代碼不再需要通過name_char訪問Java字元串,否則會
//造成內存泄露
env->ReleaseStringUTFChars(name,(const char *)name_char);
env->ReleaseStringUTFChars(value,(const char *)value_char);
return ;
}
5.編譯ChangeEnv.cpp文件,生成libchange_env.so文件
gcc -I/home/disk4/sgh/sgh/jrockit/include -I/home/disk4/sgh/sgh/jrockit/include/linux -shared -o libchange_env.so ChangeEnv.cpp
說明:
1. Linux下鏈接庫名稱必須以lib開頭,否則會無法識別
6. 編寫測試程序test.java
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(System.getenv("PATH"));//列印改變之前的PATH路徑
String pathPer = System.getProperty("java.library.path");
pathPer+=":.";
System.setProperty("java.library.path",pathPer);//把當前目錄加到動態鏈接庫路徑中
ChangeEnv changePath = new ChangeEnv ();//生成一個ChangeEnv對象
changePath.setEnv("PATH","$PATH:/home/disk4/sgh/sgh/soft/slurm34/bin:/home/disk4/sgh/sgh/soft/slurm34/sbin",1);
System.out.println(System.getenv("PATH"));//列印改變之後的PATH路徑
}
}
說明:
1. 可以看到PATH路徑發生了變化
JNI在windows下的使用
既然所有的.h ,.cpp文件都已寫好,我們不防順便編譯以下windows下的動態鏈接庫.dll文件。
這時我們發現在windows下的vc環境中沒有setenv(char * name ,char * value ,int replace),而只有putenv(char * key_value)函數,所以我們必須重寫ChangeEnv.cpp,為了使ChangeEnv.class對外介面保持一致性,所以我們沒有改寫ChangeEnv.java中本地函數借口的聲明。
1. 重寫ChangeEnv.cpp函數
#include"ChangeEnv.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//與ChangeEnv.h中函數聲明相同
JNIEXPORT void JNICALL Java_ChangeEnv_setEnv(JNIEnv * env, jobject obj, jstring name, jstring value, jint replace)
{
if(replace==0)//如果replace==0表示不發生置換,直接退出
return ;
////從instring字元串取得指向字元串UTF編碼的指針
const char * name_char =(const char *) env->GetStringUTFChars(name ,JNI_FALSE);
const char * value_char =(const char *) env->GetStringUTFChars(value ,JNI_FALSE);
//實際調用的C庫函數,把環境變數寫成key=value格式
char * key_value=(char *)name_char;
strcat(key_value, "=");
strcat(key_value, value_char);
putenv(key_value);
//通知虛擬機本地代碼不再需要通過name_char訪問Java字元串,否則會
//造成內存泄露
env->ReleaseStringUTFChars(name,(const char *)name_char);
env->ReleaseStringUTFChars(value,(const char *)value_char);
return ;
}
2. 在vc6中新建一個動態鏈接庫工程,添加ChangeEnv.h和ChangeEnv.cpp到該工程中去
3. 在「工具」----〉「選項-」----〉「目錄」中添加java的include路徑
C:\Program Files\Java\jdk1.5.0_06\include和C:\Program Files\Java\jdk1.5.0_06\include\win32
4. 單擊「運行」,把生成的change_env.dll拷貝到ChangeEnv.java所在的工程目錄中
5. 在ChangeEnv.java所在工程中新建一個測試程序test.java
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
ChangeEnv changePath = new ChangeEnv();
changePath.setEnv("PATH", "%PATH%;c:\\", 1);
System.out.println(System.getenv("PATH"));
}
}
轉載