はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

Javaについてのメモ

(2020-02-04更新)

Javaプログラムをコンソールから実行する方法を自分用にメモしています。 使用環境はLinux Mint 18です。

目次

コンパイルと実行

次のページを参考にさせていただきました。

【Java入門】classpathを指定して実行する方法(確認の方法も解説) | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

jUnit3 をコンソールで実行するための導入手順 (Eclipseを使わずに,Ant+jUnitDocletで頑張る) - 主に言語とシステム開発に関して

単独ファイル

Main.java

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

コンパイルと実行

$ javac Main.java
$ java Main
Hello World!
複数ファイル

Main2.javaのMain2クラスからHello.javaのHelloクラスを使用しています。

Main2.java

public class Main2 {
    public static void main(String[] args) {
        Hello hello = new Hello();
    }
}

Hello.java

public class Hello {
    public Hello() {
        System.out.println("Hello World!");
    }
}

コンパイルと実行

$ javac Hello.java
$ javac Main2.java
$ java Main2
Hello World!

コンパイルjavac Main2.java Hello.javaと一度に複数ファイルを指定することもできます。

複数ファイルが別ディレクトリにある場合

Main2.javaのMain2クラスからHello.javaのHelloクラスを使用しています。 Hello.javaはhelloclassディレクトリに入っているとします。

$ tree
.
├── Main2.java
├── helloclass
│   └── Hello.java

コンパイル

$ cd helloclass
$ javac Hello.java
$ cd ..
$ javac -classpath helloclass Main2.java

参照しているクラスファイルが同じディレクトリに無い場合には、-classpathオプションで場所を指定します。 もし-classpathをつけないとエラーが発生します。

$ javac Main2.java
Main2.java:3: エラー: シンボルを見つけられません
        Hello hello = new Hello();
        ^
  シンボル:   クラス Hello
  場所: クラス Main2
Main2.java:3: エラー: シンボルを見つけられません
        Hello hello = new Hello();
                          ^
  シンボル:   クラス Hello
  場所: クラス Main2
エラー2個

-classpath-cpのように省略することができます。

JUnit

HelloTest.java

import junit.framework.TestCase;

public class HelloTest extends TestCase {
    public void testTalk() {
    Hello hello = new Hello();
        String s = hello.talk();
    assertEquals("Hello", s);
    }
}

Hello.java

public class Hello
{
    public String talk() {
        return "Hello";
    }
}

junit.jarが/usr/share/javaにあるとします。

コンパイルと実行

$ javac -classpath /usr/share/java/junit.jar:. HelloTest.java Hello.java
$ java -classpath /usr/share/java/junit.jar:. junit.textui.TestRunner HelloTest
.
Time: 0.008

OK (1 test)

クラスパス指定は-classpath /usr/share/java/junit.jar:.になっています。 これはJUnit用に/usr/share/java/junit.jarを、作成したファイル用にカレントディレクトリを意味する.をコロン(:)で接続した形になっています。 (Linuxなどの場合。Windowsセミコロン(;)で接続します。)

JUnit4の場合はjunit.jarをjunit4.jarにします。

JUnit3以前の環境ではjunit.textui.TestRunnerjunit.swingui.TestRunnerにするとSwingを使ったGUIで結果が表示されます。