2011-01-10 3 views
1

は、どのように私は私が./progJavaのMakefileの出力単一の実行

で実行可能なファイルを出力リレーする src/Hello.javaに位置する単一のソースファイルで私のJavaプログラムをコンパイルするMakefileを作成することができます

答えて

2

(1)http://ant.apache.org/を見てみましょう - これは、Javaに適したビルドツールです。たとえば、antのjavacコマンドをチェックします。

(2)Java仮想マシン(java)を実行し、実行するものを指示してJavaプログラムを実行する必要があります。 Javaでプログラムを実行する方法は./xxxではありません。そのメソッドはスクリプトまたは実行可能プログラムを実行し、コンパイルされたJavaプログラムはどちらでもないバイトコードです。メイクは、主に、Javaプログラムを構築するための優れたツールではありません

#!/bin/bash 

java -cp . Hello 
+0

まあ、Linux上で、実際にすることができますbinfmtは、そこにあります./app.jarを実行します。 –

+0

それを考えると、WindowsのJavaインストーラは "jar"エクステンションを登録するので、コマンドラインから直接実行することも、それをクリックすることもできます。唯一の問題は、コンソールまたはウィンドウ版のJVMを使用するかどうかです。しかし、よりエキゾチックなプラットフォームにはこのような機能がないかもしれません(HP-UXが思い浮かぶ)。 –

2

:何が必要のように、小さなシェルスクリプトを作成して、「こんにちは」と呼んで、それはchmodで実行権限を与えるために、その内容が何かあるべきですこれは、期限切れのソース(ソースファイルまたはオブジェクトファイルのいずれか)を識別し、それらに変換を適用することがコア設計のためです。 Javaコンパイラはこの依存関係チェックをすでに処理しており、JavaコンパイルのMakeルールを定義することは価値があるよりも面倒です。

Adrian Smithは既にAntを提案しています。代わりにMavenを提案するつもりです。

この主な理由は、Mavenで簡単なプロジェクトを作成するのが非常に簡単だということです。Mavenにディレクトリ構造全体を作成させるように指示すると、それだけで機能します。また、Mavenが作成するディレクトリ構造が気に入らないかもしれませんが、大規模なプロジェクトで作業している場合は、一貫性が得られます。 Mavenには限界がありますが、そのうちのいくつかは非常に痛いですが、あなたはそれらを回避する知識があるまで、一般的には実行されません。

Javaプログラムを実行する場合は、その行のどこかでJVMを起動する必要があります。シェルスクリプトは1つの方法ですが、一般的にJVMを直接呼び出すほうが簡単です。あなたは(Mavenのは、すべての依存関係を含めるためのオプションを含め、あなたのために尽くす)「の実行可能JAR」を作成した場合、あなたはこのようにそれを呼び出すことができます。

java -jar executable.jar 
+0

Javaコンパイラは、単一のファイルをコンパイルするのに適しています。これは、複数のファイルをコンパイルして、それぞれのJVMを完全に起動することを避けることができます(これまでは非常に時間がかかりました)。 makeは、複数のファイルを処理するための単一のコマンドラインを起動するための良いツールではないため、antは書かれています。 –

関連する問題