2012-09-03 56 views
3

从C++ /做背景的,我已经习惯了做这样的事情来构建和运行小型/中型项目:从命令行运行中小型Java程序的最佳方式是什么?

make 
./foobar 

然而,与Java /蚂蚁我发现我必须做些什么像这样:

ant 
java -ea -cp build/ foobar 

打字java -ea -cp build/ foobar我想测试我的程序每次都烦了,我宁愿能够做一些简单的像./foobar

我想出了两个可能的解决方案来解决这个问题,但都不是很好。首先是只是有compile目标创建一个名为run文件:

#!/bin/bash 

java -ea -cp build/ foobar 

,然后只用./run运行的程序,然而,这似乎跟蚂蚁的跨平台性,也似乎只是一个一点点黑客。

第二个选择是创建一个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程序的一个更好/更标准的方式(!)线?或者我应该只使用我在这里发布的一种方法?

+0

我倾向于只是将命令写出来,然后依靠我的shell的历史记录再次运行它。 ' -r foob '应该让我那里。我承认,对任何实际用户都没有帮助。 –

+0

如果你想快速运行一个程序,我会从IDE运行它。这让您可以在您键入并单击按钮运行或运行Debug时查看编译器错误。 –

+0

我不是Ant专家,但Gradle有一个[应用程序插件](http://gradle.org/docs/current/userguide/application_plugin.html),它提供了运行程序的“run”任务作为'installApp'任务,它创建特定于平台的启动脚本。很可能有一个Ant等价物。 –

回答

3

在我看来,你想在开发阶段建立/运行。

如果是这样,那么得到一个Eclipse并用它来调试/运行,这是在java下开发的最有效的方法。

一般:

  • 蚂蚁用于包装相

  • 外壳用于运行程序,你会写每个环境中的一个(的Linux/Windows/Mac的OS)

+0

看来这可能是正确的答案。我使用命令行主要是为了学习java编译过程,我想没有比我在我的问题中提出的更清晰的方式来运行程序。如果在接下来的几个小时内没有其他人,我会接受这个答案。 –

+0

这是为不同操作系统提供不同shell脚本的常用方法。您还可以将这些shell脚本的生成作为您的ant构建文件的一部分。 – coolcfan

+0

@GordonBailey几小时过去了:-) –

相关问题