ant編譯指定jdk
㈠ ant1.9.6怎麼指定jdk路徑
java初學者 JDK命令行 路徑問題
屏幕出現:
Exception in thread "main" java.lang.NoClassDefFoundError: C:\JavaTest\Hello
hello.class明明在為什麼說CLASS不在,原因在CLASSPATH
1、SET CLASSPATH=、、、、
2、JAVA -CLASSPATH C:\、、、
JDK將帶有空格的C:\Java Test分隔為兩部分"C:\Java"及"Test\Hello.java",並將C:\Java視作為一個無效的選項了。這種情況下,我們需要將整個路徑都加上雙引號,即
javac "C:\Java Test\Hello.java"
這回JDK知道,引號裡面的是一個完整的路徑,因此就不會報錯了。同樣,對java命令也需要如此,即
java -classpath "C:\Java Test" Hello
Java很誘人,但對於剛跨入Java門檻的初學者來說,編譯並運行一個無比簡單的Java程序簡直就是一個惡夢。明明程序沒錯,但各種各樣讓人摸 不著頭腦的錯誤信息真的讓你百思不得其解,許多在Java門口徘徊了很久的初學者就這樣放棄了學習Java的機會,很是可惜。筆者也經歷過這個無比痛苦的 階段,感覺到編譯難的問題就出在classpath的設置及對package的理解之上。本文以實例的方式,逐一解決在編譯過程中所出現的各種 classpath的設置問題。本文實例運行的環境是在Windows XP + JDK 1.5.0。對其他的環境,讀者應該很容易進行相應的轉換。
㈡ 用ant將程序編譯和運行,都要做什麼工作
ant是apache項目組的一個子項目,是一個基於java的構建工具。ant本身用java實現,要構建的工程的配置文件用xml格式描述,可以很方便的實現跨平台構建工作。
ant 可以從http://ant.apache.org下載,目前最新版本為1.5.4。下載完畢後直接解壓縮到一個目錄,例如D:\ant。
下一步我們需要設置如下的環境變數:
ANT_HOME:ant的安裝目錄,如果按上面方法解壓縮了ant,那麼這個值應該設為D:\ant
JAVA_HOME:jdk的安裝目錄
PATH:把%ANT_HOME%\bin目錄加到path變數,以便於從命令行直接運行ant。
(1)建立build.xml
用ant編譯規模較大的工程非常方便,每個工程都對應一個build.xml文件,這個文件包含與這個工程有關的路徑信息和構建任務。
下面是一個最簡單的build.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="projectTemplate" default="init" basedir=".">
<target name="init" >
<property name="lib.dir" value="lib"/>
<echo message="Hello ,lib.dir is set to ${lib.dir}" >
</echo>
</target>
</project>
每個build.xml有且僅有一個project,每個project下面可以包含多個target,每個target表示一個小的任務,每個任務負責執行一段腳本。ant有內置任務集可供使用,例如上面的echo就是在console上顯示消息。
更詳細的內置任務請參考http://ant.apache.org/manual/coretasklist.html
${lib.dir}表示引用一個名字叫做lib.dir的屬性值,這個屬性的值就是lib。
(2)運行ant
使用ant.bat可以直接運行ant,如果不帶任何參數,ant會在當前路徑下搜索build.xml文件,如果找到了這個文件,就運行project的default屬性指定的target.我們也可以帶參數來運行ant,以便選擇build.xml文件和要運行的target:
ant -buildfile c:\demo\build.xml init
表示運行c:\demo\build.xml 中名字為init的target
(3)ant的目標依賴
target有一個屬性depends,在其中可以指定一系列的target名字,表示在執行該target前,必須首先執行的一系列其它target。depends具有傳遞性,例如:targetA depends targetB,而targetB depends targetC和targetD,這樣在執行targetA之前,首先執行C和D,然後執行B,最後才會執行A。
下面是個簡單的例子,在執行編譯的動作前,首先需要建立一個目標代碼存放的目錄,然後再執行編譯。
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="project" default="init" basedir=".">
<target name="init" >
<property name="dist" value="dist"/>
<mkdir dir="${dist}" />
</target>
<target name="build" depends="init">
<javac srcdir="SourceCode" destdir="${dist}">
</javac>
</target>
</project>
㈢ 請教ant怎麼編譯jdk源碼
整理了一下編譯JDK源碼的Ant腳本。發現用新一點的JDK編譯舊的版本更容易,比如用jdk1.6.0_25編譯jdk1.6.0_21。如果直接用jdk1.6.0_21編譯自身代碼,不是缺這個就是沒那個,頗為麻煩。切到jdk1.6.0_25後,一下就編譯通過了。
<project name="create rt_debug.jar" default="createJar" basedir=".">
<!-- *************************************************************** -->
<!-- Set-Up of propertys -->
<!-- *************************************************************** -->
<property name="project.build" location="build" />
<property name="project.src" location="${project.build}/src" />
<property name="project.classes" location="${project.build}/classes" />
<property name="project.dist" location="${project.build}/dist" />
<property name="JAVA_SOURCE" value="C:/Dev/Software/Java/jdk1.6.0_21" />
<property name="JAVA_COMPILER" value="C:/Dev/Software/Java/jdk1.6.0_25/fastdebug" />
<property name="debuglevel" value="source,lines,vars" />
<property name="target" value="1.6" />
<property name="source" value="1.6" />
<property environment="env" />
<!-- *************************************************************** -->
<!-- Initialize the bulid environment. -->
<!-- *************************************************************** -->
<target name="init">
<!-- Create the time stamp -->
<tstamp />
</target>
<!-- *************************************************************** -->
<!-- Set-Up of classpath -->
<!-- *************************************************************** -->
<path id="JavaLibraries">
<pathelement location="${project.classes}" />
<fileset dir="${JAVA_COMPILER}/lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${JAVA_COMPILER}/jre/lib">
<include name="**/*.jar" />
</fileset>
</path>
<path id="project.classpath">
<path refid="JavaLibraries" />
</path>
<!-- *************************************************************** -->
<!-- Clean the bulid environment. -->
<!-- *************************************************************** -->
<target name="clean" depends="init">
<delete dir="${project.build}" quiet="true" />
<mkdir dir="${project.build}" />
</target>
<!-- *************************************************************** -->
<!-- Unpacd the source code package. -->
<!-- *************************************************************** -->
<target name="unpack" depends="init, clean">
<unzip src=\'#\'" /src.zip" dest="${project.src}" />
</target>
<!-- ****************************************************************** -->
<!-- Compile the source code. -->
<!-- ******************************************************************* -->
<target name="build" depends="unpack">
<echo message="Compile ${ant.project.name}" />
<mkdir dir="${project.classes}" />
<javac classpathref="project.classpath" srcdir="${project.src}" destdir="${project.classes}" debug="true" debuglevel="${debuglevel}" source="${source}" target="${target}" fork="true" memoryMaximumSize="512m">
<include name="**/*.java" />
</javac>
</target>
<!-- ****************************************************************** -->
<!-- Create jar package. -->
<!-- ******************************************************************* -->
<target name="createJar" depends="build">
<mkdir dir="${project.dist}" />
<jar jarfile="${project.dist}/rt_debug.jar" compress="false">
<fileset dir="${project.classes}" />
</jar>
</target>
</project>
㈣ 請問下在myeclipse下可以編譯java程序的jdk版本,放在ant編譯怎麼不通過,提示兼容性問題
MyEclipse設置JDK和JRE具體的應用版本其實很簡單,分為三種狀況:
1、設置默認使用的JDK和JRE環境。
具體步驟:菜單window-preferences-java-Installed JRES。
點中了,右邊的窗口點ADD按鈕,記住選擇添加安裝了Java目錄下的JDK目錄,而不是JRE目錄。
天價後,在列表中選擇你要使用的那個jdk版本即可。
然後Compiler項下,選擇編譯的jdk級別就可以了。
2、針對項目的環境設置。
右鍵項目菜單properties-Java Compiler,選擇了以後,選中Enable project specific settings,去掉Use compliance from execution environment ......前面的那個選擇框,就可以自己選擇使用的jdk版本了。
3、應用伺服器的環境設置。
選擇你要使用的應用伺服器名稱,點進去會看到JDK的菜單,選中後就可以在右邊窗口的下拉選擇框中選擇自己需要使用的jdk版本了。
㈤ Eclipse ant怎麼能用高版本的jdk
eclipse中修改ant的高版本jdk:
1、修改Ant編譯版本的方法
2、這里把target改成1.6或者1.7就可以了。
㈥ Ant 用javac編譯時怎樣指定jdk的版本
可以使用javac命令javac命令格式及用法如下:
用法:javac <選項> <源文件>
其中,可能的選項包括:
-source <版本> 提供與指定版本的源兼容性
-target <版本> 生成特定 VM 版本的類文件 例如:C:\>javac -source 1.5 -target 1.5 p100Sum.java這樣就把p100Sum.java源文件兼容的編譯成1.5版本了
<javac fork="true"
executable="C:/j2sdk1.4.2_05/bin/javac"
source="1.4"
memoryInitialSize="512m"
memoryMaximumSize="1024m"
classpathref="path.id.classpath"
srcdir="${src}"
destdir="${classes}"
debug="true"
deprecation="on"
optimize="off"
/>
source處填版本號
㈦ 如何使用Ant來編譯Java文件以及如何運行
一、源文件情況
源文件位置為:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java
前提:已安裝 jdk ,並配置好環境變數。
二、過程
1、編譯:
提示符進入 D:\temp 路徑下,輸入:javac com\ldq\WeatherDemo.java
生成類文件:WeatherDemo.class
2、打包:
提示符進入 D:\temp 路徑下,輸入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成檔案文件:WeatherDemo.jar
3、修改 MANIFEST.MF 文件:
由於引用了外部的類,所以要添加引用類的路徑,即修改MANIFEST.MF文件。保存如下內容到 D:\temp下,文件名 MANIFEST.MF
Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar
注意在後面空兩行。
提示符進入 D:\temp 路徑下,輸入:jar umf MANIFEST.MF WeatherDemo.jar
執行時會提示更新的內容。
4、添加包含引用類的相應文件:
在 D:\temp 路徑下,新建 lib 文件夾,講對應的 jaxrpc.jar ... 拷入其中,此時,即可雙擊(或在提示符下輸入:java -jar WeatherDemo.jar)運行 WeatherDemo.jar 文件了。
三、總結
雙擊運行 jar 文件時,虛擬機會到 jar 文件中下找 .MF 文件,找到對應的 Main-Class 運行,引入的類在 Class-Path 所指路徑。
事實上可以利用 winrar或winzip 工具打開 jar 文件,直接將修改好的 MANIFEST.MF 拷入覆蓋,class文件也可以做同樣的操作,節省了輸入復雜難記的命令。另外,對於 javaME 生成的 jar 文件,限制嚴格些,MANIFEST.MF 文件中有個文件大小的欄位,可以先保存,查看文件大小,再修改保存。
另一種方法是通過 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此時,所有的引用類都被打包在 jar 文件里了。
㈧ ant 腳本中如何設置jdk的路徑
方法1:
直接修改ANT的運行文件:ant.bat ,設置JAVA_HOME,這樣所有的ANT都使用設定的JDK也是一種方法; 我以前做Jetty也是這么做的,挺方便;
方法2:
<javac srcdir="${src}"
destdir="${build}"
fork="yes"
executable="/opt/java/jdk1.1/bin/javac"
compiler="javac1.5"
/>
這樣就可以制定特定的java編譯器了