本文目錄一覽:
- 1、java-version和javac-version區別
- 2、javac和java 有什麼區別和聯繫?
- 3、javac不是內部或外部命令,也不是可運行的程序或批處理文件
- 4、javac不能運行是怎麼回事?
- 5、請詳細寫出Javac和Java兩個命令的使用方式
- 6、javac是什麼?
java-version和javac-version區別
路徑不同。
1、java -version:查看的是系統安裝的java版本,和是否配置java配置環境變量無關,找的路徑是path中C:\WINDOWS\system32\java.exe。(即使配置過java環境變量,這個path在環境變量之前的話還是運行的是這個)。
2、javac -version:查看的配置環境變量後的java版本,找的路徑是path中C:\Program Files\Java\jdk1.6.0_45\bin\javac.exe。
javac和java 有什麼區別和聯繫?
javac和java命令行中的-classpath選項
這是個很基礎的問題,但是因為基本上都是用現有的IDE工具 來開發java程序,所以很少有人意識到這一點。
javac
-classpath,設定要搜索類的路徑,可以是目錄,jar文件,zip文件(裡面都是class文件),會覆蓋掉所有在CLASSPATH裡面的設定。
-sourcepath, 設定要搜索編譯所需java 文件的路徑,可以是目錄,jar文件,zip文件(裡面都是java文件)。
所以一個完整的javac命令行應該是這樣的,
假設abc.java在路徑c:\src裡面,在任何的目錄的都可以執行以下命令來編譯。
javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java
表示編譯需要c:\classed下面的class文件,c:\jar\abc.jar裡面的class文件,c:\zip\abc.zip裡面的class文件
還需要c:\source\project1\src下面的源文件,c:\source\project2 \lib\src.jar裡面的源文件,c:\source\project3\lib\src.zip裡面的源文件,
注意:jar,zip裡面的源文件不會有什麼改動,目錄下的源文件,有可能會被重新編譯。
java
-classpath, 設定要搜索的類的路徑,可以是目錄,jar文件,zip文件(裡面都是class文件),會覆蓋掉所有的CLASSPATH的設定。
由於所要執行的類也是要搜索的類的一部分,所以一定要把這個類的路徑也放到-classpath的設置裡面。
表現在,在要執行的類的路徑裡面執行java時,一定要添加上點號(.)標示本目錄也要搜索。
假設abc.class在路徑c:\src裡面
可以在任何路徑下執行以下命令
java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc
問題:如果main.class屬於c:\jar\abc.jar,並且在com.cnblogs.jeffchen這個包里,那麼執行java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可, 但是如果classpath中包含多個jar包呢?並且其他jar包中也有com.cnblogs.jeffchen會發生什麼情況?錯誤?
在windows下,
文件路徑的分割符為反斜杠 \
類或者java文件列表的分割符為分號 ;
在linux下
文件路徑的分隔符位斜杠 /
類或者java文件列表的分隔符為冒號 :
一個linux下編譯和運行的例子
/usr/local/java/bin/javac -classpath /tmp/javatest/lib/mail-1.3.3.jar -d /tmp/javatest/bin/ /tmp/javatest/src/jp/co/realseed/Capability.java
/usr/local/java/bin/java -classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability
javac不是內部或外部命令,也不是可運行的程序或批處理文件
如果你只需要使用javac命令不需要如此複雜的!!
你先把你自己新建的JAVA_HOME、CLASSPATH這兩個變量和PATH變量中的JAVA_HOME%\bin;%JAVA_HOME%\jre\bin刪了,
然後只要在Path變量的頭部添加如下路徑:
C:\Program Files\Java\jdk1.5.0\bin;就可以了。(不需要在添加別的了)
原因很簡單:你可以按照這個路徑去看看有沒有一個叫javac.exe的東東在bin文件夾中,環境變量Path的作用通俗點講就是用來告訴你的電腦如何去找到這個可執行文件並執行它。
如果你是初學者的話配不配置CLASSPATH環境變量都可以的,因為CLASSPATH變量是用來設定“類路徑”的(其實這種方式是sun不推薦的)。設置CLASSPATH變量的目的講白了其實是為了把別人寫好的類庫挪過來好將來自己用。
希望對你有幫助哈,呵呵
javac不能運行是怎麼回事?
Classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
這個地方最後面 你沒有寫分號 正確的為:
Classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
不寫分號容易出 什麼找不到main的錯誤
如果javac不是內部命令,恭喜你,重新安裝JDK 並且重新配置環境變量吧。我以前也遇到過一次。不信你去JDK路徑看看 根本沒有javac.exe這個東西
javac 是java語言編程編譯器。全稱java compiler。javac工具讀由java語言編寫的類和接口的定義,並將它們編譯成字節代碼的class文件。javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項可跟蹤自動編譯。當編譯源文件時,編譯器常常需要它還沒有識別出的類型的有關信息。對於源文件中使用、擴展或實現的每個類或接口,編譯器都需要其類型信息。這包括在源文件中沒有明確提及、但通過繼承提供信息的類和接口。
請詳細寫出Javac和Java兩個命令的使用方式
javaac和java兩個命令的使用詳解:
一、javac命令
javac 用於編譯Java文件,格式為:
java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,缺省情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :
二、java命令
java 用於執行程序,格式如下:
java [options] classfile
options:命令行選項,一般用於 -classpath 指定要執行的文件所在的位置以及需要用到的類路徑,包括jar、zip和class文件目錄,會覆蓋CLASSPATH的設定
三、腳本
如果要敲的命令很長,每次要編譯運行的時候都要重新敲一遍,這是一件很痛苦的事情,所以用腳本可以大大方便你的工作量。在linux下用shell腳本,windows下用bat批處理程序。因為是在linux下,我這裡只是簡單介紹一下shell,關於bat批處理程序的語法自己百度一下,不難。
1. 開頭
linux有很多不同的shell,通常使用bash(bourne again shell),程序必須以下面的行開始:
#!/bin/sh
#!用來告訴系統用後面的參數來執行程序,這裡使用的是/bin/sh
要使你的腳本能夠執行,還必須讓這個文件有可執行權限,使用下面命令更改文件權限:
chmod +x filename
2. 注釋
以#開始的句子表示注釋,一直到這行結束,多寫注釋有利於以後重新看的時候知道自己在做什麼
javac是什麼?
javac是Java編譯器,負責將Java源代碼轉換成字節碼文件。
javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項可跟蹤自動編譯。當編譯源文件時,編譯器常常需要它還沒有識別出的類型的有關信息。
javac的特點
javac具有簡單性、面向對象、分布性、解釋性、可靠、安全、平台無關、可移植性、高性能、多線程、動態性等特點。提供了異常處理機制,程序員可以把錯誤代碼放在一起,這樣可以簡化錯誤處理任務,便於恢復。不支持指針,杜絕了內存的非法訪問。
原創文章,作者:AORHW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/329780.html