Index ¦ Archives

JavaMemo_3

Java記述のルール

package宣言
import宣言 class
順番が異なるとコンパイルエラーとなる。

package src;
import java.util.*;

class Main {
    public static void main(String[] args) {
    }
}

*をつけると、指定したpackageに属するクラスを全て使用できる。

package src;
import java.util.*;

class Main {
    public static void main(String[] args) {
        ArrayList<String> list1;
    }
}

完全修飾詞で読み込むパターン①
import宣言

import java.util.ArrayList;

完全修飾詞で読み込むパターン②
宣言時に完全修飾詞を追記

java.util.ArrayList<String> list;

## 別のpackageの読み込み

2つの有名packageと1つの無名package

src/Main.java
sample/Sample.java
Sample.java

src/Main.java

別のpackageのクラスを読み込む場合はimportする src/Main.java

package src;
// samplepackageを読み込む
import sample.Sample;

public class Main {
    public static void main(String[] args) {
        System.out.println(1);

        new Sample();
    }
}

sample/Sample.java

package sample;

public class Sample {
    public void sample(){
        System.out.println("sample");
    }
}

無名パッケージは無名パッケージに属するクラスしか読み込めない。

sample.java

public class Sample {
    public void sample(){
        System.out.println("sample");
    }
}

packageの注意点

ディレクトリ構成がsrc/Main.javaの場合、 package宣言をしないとエラーとなる。

class Main {
    public static void main(String[] args) {
    }
}
The declared package "" does not match the expected package "src"

javaのcommand

java commandでの呼び出し

java Main.java

sourceファイルモードでの呼び出し
class名とファイル名が異なっている場合でも呼び出せる様になる。

// ファイル名Main.javaをMainに変更
mv Main.java Main
java --source 17  Main
// 元に戻す。
mv Main Main.java

classファイルを作成後、jarを作成し。jarを起動してみる

ソースコード

package src;

public class Main {
    public static void main(String[] args) {
        System.out.println(1);
    }
}

指定した場所にclassファイルを生成

// compile後に、classファイルが作成される
javac -sourcepath src src/Main.java

classファイルを実行

java src/Main

指定した場所にjarを生成

jar -cvf src/Main.jar src/*.class

manifestファイルが存在しない状態でjarを起動した場合

no main manifest attribute, in src/Main.jar

manifestファイルを作成

touch Main.mf

manifestファイルに以下記述
起動するための情報が必要となる

Main-Class: src.Main

manifestファイルをjarに追加する

jar -cvfm src/Main.jar src/Main.mf src/*.class
added manifest
adding: src/Main.class(in = 382) (out= 272)(deflated 28%)

jarを起動する

java -jar src/Main.jar

jarの中身を確認

jar -tf src/Main.jar
META-INF/
META-INF/MANIFEST.MF
src/Main.class

jarを展開する
カレントディレクトリに展開されるので場所には注意が必要

jar -xvf src/Main.jar
  created: META-INF/
 inflated: META-INF/MANIFEST.MF
 inflated: src/Main.class

© Tokus. Built using Pelican. Theme by Giulio Fidente on github.