登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[java] ant (3), about classpath  

2009-07-04 12:08:10|  分类: lang_java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
通过 javac -classpath xxx 我们可以指定 classpath 用于编译,而在 ant 中如何做呢?
很简单,如下:
-------------------- build.xml ---------------------
  <path id="prj.classpath">
    <pathelement location="./lib/jsr166y.jar" />
  </path>

  <target name="compile" depends="init" description="Compile Java Code">
    <javac srcdir="src" destdir="build/classes">
      <classpath refid="prj.classpath" />
    </javac>
  </target>
------------------------------------------------------


同样,我们常用 $make run 来运行程序,如下,我们实现 $ant run
-------------------- build.xml ---------------------
  <target name="run" depends="package">
    <exec executable="java">
      <arg line="-classpath lib/jsr166y.jar -jar dist/hello-fj.jar" />
    </exec>
  </target>
------------------------------------------------------
<exec> 不支持 <classpath> 这个 tag (当然不支持,ant都不知道你是否运行 java 这个 executable)。
<exec> 支持啥,参考这里:
http://ant.apache.org/manual/CoreTasks/exec.html

------------------------------------------------------
2009-07-05
上面的 <arg line="-classpath lib/jsr166y.jar -jar dist/hello-fj.jar" /> 这句话是有问题的。我们来做个试验:

小程序:
public class MyHello {
        public static void main(String[] args) {
                System.out.println(System.getProperty("java.class.path"));
        }
}

$ java MyHello             
.      -- 默认是 .

$ java -cp lib/jsr166y.jar MyHello
Exception in thread "main" java.lang.NoClassDefFoundError: MyHello

$ java -cp .:lib/jsr166y.jar MyHello
.:lib/jsr166y.jar

$ java -cp .:lib/a.jar -jar lib/jsr166y.jar MyHello
Failed to load Main-Class manifest attribute from
lib/jsr166y.jar

发现了么,-jar 会把 "java.class.path" 修改为 lib/jsr166y.jar,-cp .:lib/a.jar 没有起作用。
恩,所以我们上面的 ant 脚本要这样写:
<arg line="-classpath lib/jsr166y.jar:dist/hello-fj.jar MainClass" />

当然,在实际应用中,我们可以用 shell 直接将 $CLASSPATH 设置好,然后启动 java 即可。

  评论这张
 
阅读(1513)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018