id: 11929    nodeId: 11929    type: General    point: 125.0    linkPoint: 1.0    maker: cella    permission: linkable    made at: 2014.02.06 00:45    edited at: 2014.02.06 01:04
how to make and use a java package
********
1. In the case when the main function and the classes used are in the same directory:

Make a directory ./testpackage/
Make a java file with a class ./testpackage/MyObj.java
The directory name is equal to the package name.
----
package testpackage;

class MyObj {
private int i;

public MyObj( int _i) { i = _i;}
public int getI() { return i;}
public void setI( int _i) { i = _i;}
}
----

Make a java file with main() ./testpackage/MyCall.java
----
package testpackage;

import java.io.*;
import java.util.*;
import java.text.*;



public class MyCall {

public static void main( String[] args) {
MyObj obj = new MyObj( 10);
System.out.println( obj.getI());
changeInt( obj);
System.out.println( obj.getI());
}

public static void changeInt( MyObj obj) {
System.out.println("in changeInt, before change:" + obj.getI());
obj.setI( 20);
//obj = new MyObj( 20);
}

}
----

$ javac testpackage/*.java
$ ls testpackage
MyCall.class MyCall.java MyObj.class MyObj.java
$ java testpackage.MyCall


********
2. In the case when the main function and the classes used are NOT in the same directory:

Make a directory ./testpackage2/
Make a java file with a class ./testpackage2/MyObj.java
The directory name is equal to the package name.
Note: the class should be public to be used outside the package.
----
package testpackage2;

public class MyObj {
private int i;

public MyObj( int _i) { i = _i;}
public int getI() { return i;}
public void setI( int _i) { i = _i;}
}
----

Make a java file with main(): ./MyCall.java
----
import java.io.*;
import java.util.*;
import java.text.*;

import testpackage2.*;


public class MyCall {

public static void main( String[] args) {
MyObj obj = new MyObj( 10);
System.out.println( obj.getI());
changeInt( obj);
System.out.println( obj.getI());
}

public static void changeInt( MyObj obj) {
System.out.println("in changeInt, before change:" + obj.getI());
obj.setI( 20);
//obj = new MyObj( 20);
}

}
----
Now compile and run.
Note: classpath is the current directory which contains the package directory testpackage2.

$ javac testpackage2/*.java
$ ls testpackage2
MyObj.class MyObj.java
$ javac -classpath . MyCall.java
$ java MyCall


Return to 박물관 or how to make and use a java package