3

私はc++/ makeのバックグラウンドから来て、中小規模のプログラムをビルドして実行するために次のようなことをすることに慣れています。

make
./foobar

ただし、java / antを使用すると、次のようなことを行う必要があります。

ant
java -ea -cp build/ foobar

java -ea -cp build/ foobarプログラムをテストするたびに入力するのはかなり面倒です。むしろ、のような単純なことを実行できるようにしたいと思い./foobarます。

私はこの問題に対して2つの可能な解決策を考え出しましたが、どちらも非常に良いようには見えません。1つ目は、compileターゲットに次のファイルを作成させることですrun

#!/bin/bash

java -ea -cp build/ foobar

そして./run、プログラムを実行するために使用しますが、これはantのクロスプラットフォームの性質に反しているようであり、ちょっとしたハックのようにも思えます。

2番目のオプションは、runターゲットを作成することです。次に例を示します。

<target name="run" depends="compile">
   <java classname="foobar" fork="true">
      <classpath>
         <pathelement path="${build}"/>
         <pathelement path="${java.class.path}"/>
      </classpath>
      <assertions>
         <enable/>
      </assertions>
   </java>
</target>

この方法も機能し、少しきれいに見えますが、信じられないほど遅いです!例えば:

$ time ant run
Buildfile: /somepath/build.xml

init:

compile:

run:
     [java] /* program output */

BUILD SUCCESSFUL
Total time: 1 second

real    0m2.683s
user    0m2.548s
sys     0m0.136s

上記はこれよりもほぼ20倍遅い(!):

$ time ./run
/* program output */

real    0m0.143s
user    0m0.124s
sys     0m0.020s

それで、コマンドラインから中小規模のJavaプログラムを実行するためのより良い/より標準的な方法はありますか?それとも、ここに投稿した方法の1つを使用する必要がありますか?

4

1 に答える 1

3

開発段階でビルド/実行したいようです。

もしそうなら、Eclipseを入手し、それを使用してデバッグ/実行します。これは、Javaで開発するための最も効果的な方法です。

いつもの:

  • Antはパッケージングフェーズに使用されます

  • シェルはプログラムの実行に使用され、環境ごとに1つ作成します(Linux / Windows / Mac OS)

于 2012-09-03T17:57:12.820 に答える