LoginSignup
5
5

More than 5 years have passed since last update.

Java学習ノート_140714(パッケージとクラス)

Last updated at Posted at 2014-07-14

パッケージとクラス

自分でパッケージつきクラスを作成することが目標。

クラスパスとは、JVMがクラスファイルを探す場所のこと。クラスパスの指定はjava,javacコマンドの -cpオプションで指定する。

// javac,javaコマンドのクラスパス指定
javac -cp <クラスパス> <ソースファイル名>
java -cp <クラスパス> <クラス名>
//javaの-dオプション
javac -d <出力ディレクトリ> <ソースファイル名>

ぶっちゃけ、現状で何言ってるかわかんないけど、srcに階層化していく感じが慣例っぽい。ソースファイル(.java)はsrcディレクトリ、出力されるクラスファイルはbinディレクトリに作成・保存するのが基本。Eclipseは何も考えないでもそういうふうに作られるようだ。便利。

簡単なクラスの作成

Eclipseでやると何もやらないでよさ気なのだけど、コマンドプロンプト or Terminalで処理をやってみることにする。
.javaファイルをテキストエディタ(Sublime Text)で作成(コード補完出ないの辛い)。

Terminal.appで、cd 作業しているプロジェクトのディレクトリへ。

takawo$ javac -d bin src/Hello.java
takawo$ java -cp bin Hello

パッケージファイルの呼び出し

c:\javaProject>javac -cp bin -d bin src/PackageSample.java
c:\javaProject>java -cp bin PackageSample
Hello

コンパイル時に -d オプションで出力ディレクトリを指定、実行時に、 -cp オプションでクラスパスを指定。cpって言われるとコピーと間違えそうだけど、クラスパス。

パッケージつきクラスの作成

c:\javaProject>javac -d bin src/org/cenkhor/Hello.java

パッケージとクラスパスについて

publicなクラスのファイル名は必ずクラスと同じにする。
クラスパスの指定は、set CLASSPATH=binのように、環境変数として指定することで、-cpオプションをつけなくても利用できる。

・-sourcepathオプションで、依存するソースファイルをまとめてコンパイルしてくれる。

c:\javaProject>javac -cp bin -sourcepath src -d bin src/PackageSample.java

ドメイン名とパッケージ名

他言語と一緒でjp.co.yahooみたいに定義すると衝突が避けられる(一意になる)。

JARファイル

JAR(Java Archive)ファイルは、複数のクラスファイルを単一のファイルにまとめて圧縮したもの。構造ごと配布する際に便利。ZIP形式で圧縮されている。

JARファイルの作成

末尾の"."はカレントディレクトリ以下のファイルを指定するということ。

c:\javaProject\bin>jar -cvf PackageSample.jar .
マニフェストが追加されました
org/を追加中です(入=0)(出=0)(0%格納されました)
org/cenkhor/を追加中です(入=0)(出=0)(0%格納されました)
org/cenkhor/Hello.classを追加中です(入=506)(出=332)(34%収縮されました)
PackageSample.classを追加中です(入=340)(出=258)(24%収縮されました)

JARファイルの確認

c:\javaProject\bin>jar -tvf PackageSample.jar
     0 Mon Jul 14 10:04:38 JST 2014 META-INF/
    68 Mon Jul 14 10:04:38 JST 2014 META-INF/MANIFEST.MF
     0 Mon Jul 14 09:20:34 JST 2014 org/
     0 Mon Jul 14 09:20:34 JST 2014 org/cenkhor/
   506 Mon Jul 14 09:20:34 JST 2014 org/cenkhor/Hello.class
   340 Mon Jul 14 09:54:02 JST 2014 PackageSample.class

JARファイルの利用

PackageClient.java
import org.cenkhor.Hello;

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

階層関係

javaProject2
 ├ src
 │   └ PackageClient.java
 ├ bin
 │   └ PackageClient.class
 └ lib
     └ PackageSample.jar

コマンドプロンプトでの実行

c:\javaProject2>javac -cp lib/PackageSample.jar -d bin src/PackageClient.java

c:\javaProject2>java -cp lib/PackageSample.jar;bin PackageClient
Hello

Eclipseでのパッケージの利用

パッケージの作成は普通にパッケージ・エクスプローラーやメニューから行える。インポートしてからの実行も普通、クラスパスが通ってない時は補完されるか、エラーが出る。クラスパス、ソースパスの指定とかいちいちしなくていいから楽。

EclipseでのJARファイルの作成、利用

JARファイルの作成は対象のパッケージファイルをエクスポート→Java→JARファイルで作成できる。

使用したい場合は、プロジェクトファイルを右クリック→ビルドパス→外部アーカイブの追加で、JARファイルを追加できる。

その他

gVim

環境構築ばっかしてる気がするけど、以下の記事を参考にvimのインストールをした。gVim。

コマンドプロンプトからのコピペ

よく考えたらCUIツールだからコマンド書いてるほうが変なのかもしれないが、直感的にコピペできないの違和感ある。

140714cmdprompt.png

Win <=> Mac 間でのプロジェクトファイル

週末普段と違うコンピュータで作業した。Dropboxでディレクトリは同期しているため、プロジェクトファイルが存在するが、パッケージエクスプローラーには反映されていなかった(この辺の設定ファイルがどこに保存されているのか気になるというか、それが同期できればいちいちインポートする手間が省けそう)。以下リンクから該当ファイルをインポートした。重複するものにはチェックされないので安心して実行できるが、慣れたらGit導入してファイル管理するのが良いっぽい。今日は前半の内容の都合、テキストエディタとコマンドプロンプトで作業してたけど、IDEって便利だとつくづく思った。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5