You are on page 1of 36

package import

Java Java
Java
http://www.javasoft.com Java 2 SDK
HelloWorld.java
Java Java
Java :
javac HelloWorld.java
HelloWorld.class:
java HelloWorld
java.exe :
Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld

(console)

Java Java
: Hello World Java

Java
Java
Java

JBuilder
Java package import

JBuilder

package import
Java Java package
import Java
Java 2 SDK d:\jdk1.3.0_01 (! package
import JDK JDK 1.4.x
Java 2 SDK)
D my
(d:\my)
:
d:\my
java javac
:

java.exe javac.exe
:
path d:\jdk1.3.0_01\bin

java javac
:
path
JDK <Windows >\system32
java.exe<Windows >\system32 Windows
path
java.exe javac.exe

d:\my :
A.java
public class A
{
public static void main(String[] args)
{
B b1=new B() ;
b1.print() ;
}
}

B.java
public class B
{
public void print()
{
System.out.println("package test") ;
}
}
:
javac A.java
d:\my
A.class B.class
javac.exe Java make
A.java B
B.java javac B.java B.java
A A.java
:
java A

package test

: -verbose javac.exe java.exe


JVM
verbose :

JDK JRE
<JRE >\lib\rt.jar
( Java Java
javac.exe JRE rt.jar ?
)
Java verbose :

java.exe JDK
JRE <JRE
>\lib\rt.jar

:
:
A.java
import edu.nctu.* ;
public class A
{
public static void main(String[] args)
{
B b1=new B() ;
b1.print() ;
}
}

B.java
package edu.nctu ;
public class B
{
public void print()
{
System.out.println("package test") ;
}
}
:
javac A.java

A.java:1: package edu.nctu does not exist

edu.nctu package

Java B edu.nctu
B.java
package edu.nctu ;
A B A.java
import edu.nctu.* ;

d:\my edu
edu nctu B.java
d:\my\edu\nctu
javac verbose A.java
:

d:\my B.java

A.java
B.java B.java package
edu\nctu

!! d:\my A.class
d:\my\edu\nctu B.class:
java A

package test
d:\my\edu\nctu
B.class
java A
:

java.exe edu/nctu B.class


B.class
:
:
package package
C xyz.pqr.abc
xyz\pqr\abr C.java C.class
javac.exe java.exe
?
d:\my ?

:
javac.exe
( B.java
d:\my d:\my\edu\nctu )
javac.exe

d:\my\edu\nctu
B.class d:\my :
java A

package test

javac A.java
A
bad class file: .\B.class
class file contains wrong class: edu.nctu.B

d:\my B.class
d:\my\edu\nctu B.java
d:\my\edu\nctu B.class
javac A.java

:
:

:
javac.exe
(
B.class d:\my d:\my\edu\nctu )
java.exe Java

:
d:\my edu
(!)d:\
javac A.java
edu.nctu package


javac classpath d:\ A.java
d:\my A.class d:\edu\nctu
B.class

java A
java.exe edu\nctu
B.class

java classpath d:\ A


java.exe A.class
B.class

java classpath d:\;. A


!


:
:
C xyz.pqr.abc
xyz\pqr\abr C.java C.class
javac.exe java.exe
? : java.exe
javac.exe -classpath
edu\nctu d:\:
javac classpath d:\ A.java

java classpath d:\;. A


java.exe javac.exe :-classpath

-classpath ? java.exe javac.exe

:
javac classpath . A.java

java classpath . A
-classpath
javac.exe d:\my
d:\my edu\nctu
java.exe
edu\nctu
javac.exe d:\my\edu\nctu B.java B.class
d:\my\edu\nctu ()
classpath d:\ javac.exe
d:\ d:\edu\nctu java.exe
classpath d:\

: javac.exe classpath d:\ java.exe
classpath d:\;.classpath d:\?
-classpath AppClassLoader
A.class (
.) AppClassLoader
A.java
AppClassLoader
-classpath AppClassLoader
B.class B.java javac.exe
-classpath ; java.exe
AppClassLoader


java.exe cp(classpath)
CLASSPATH


set CLASSPATH=d:\;.

:
javac A.java

java A
CLASSPATH
java.exe javac.exe classpath
classpath
CLASSPATH classpath

JAR ZIP
Winzip
B.java edu.zip edu.zip d:\edu.zip
:

javac classpath d:\edu.zip A.java


:

B.class edu.zip edu.zip
:

javac classpath d:\edu.zip A.java

java classpath d:\edu.zip;. A

:
:
ZIP classpath
java.exe javac.exe classpath
ZIP java.exe javac.exe
java.exe
javac.exe
CLASSPATH ZIP

ZIP ?
JAR (.jar) JAR
ZIP JAR ?
()

JAR
CLASSPATH classpath JAR
java.exe javac.exe
(<JRE
\lib\ext )

CLASSPATH classpath
JAR ( ZIP )
B.java d:\edu\nctu d:\my\edu\nctu
:
javac classpath d:\ A.java
d:\edu\nctu B.java
:
javac classpath .;d:\ A.java
d:\my\edu\nctu B.java
CLASSPATH classpath JAR


()
classpath

:
JAVA d:\my
A.java:
A.java
package edu.nctu.mot ;
public class A
{
public static void main(String[] args)
{
System.out.println("I'm A") ;
}
}
A edu.nctu.mot
:
javac A.java
? ? A.java
B.java A.java edu.nctu.mot B.java
edu.nctu B.java
javac.exe make B.java( A
B) A.java make
( B.java
CLASSPATH
classpath )
:
java A

\edu\nctu\mot
A.java d:\my A.java A.class

javac A.java

javac.exe ?
?
javac.exe A.java make
javac.exe
:
1 javac edu.nctu.mot.A.java

2 javac -classpath .\my\edu\nctu\mot A.java


3 javac -classpath d:\my\edu\nctu\mot A.java

4 javac d:\my\edu\nctu\mot\A.java

Java

A.java
javac.exe
make
:
java A
java.exe A

:
1 java edu.nctu.mot.A

2 java -classpath .\edu\nctu\mot A


3 java -classpath d:\my\edu\nctu\mot A
4 java d:\my\edu\nctu\mot\A

java.exe
: CLASSPATH classpath
\edu\nctu\mot A.class
CLASSPATH classpath
:
java classpath . edu.nctu.mot.A
d:\my java.exe
d:\my\edu\nctu\mot A.class

java classpath d:\ edu.nctu.mot.A
d:\edu\nctu\mot A.class

package
import :
1. JAVA package

2. java.exe javac.execlasspath
CLASSPATH
JAR package

Java
java.exe jvac.exe
Java
package import MIDlet
preverify.exe JNI javah.exe
package import

package import
Java
- package import Class Not
Found Exception
?

package import
package

Java

(Compile-time) Package
Package
:
: src
: comtime : outer
: com
: CA.java
: CA.java
: edu : com
: CA.java
: CA.java
: Main.java

: CA.java

:
src\comtime\Main.java
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

src\comtime\CA.java
public class CA
{
}

src\comtime\edu\CA.java
package edu;
public class CA
{
}

src\comtime\com\CA.java
package com;
public class CA
{
}

src\outer\CA.java
package outer;
public class CA
{
}

src\com\CA.java
package com;
public class CA
{
}

src\comtime (:
package package
package
) src\comtime
javac Main.java (1)

package :

Main.java :
src\comtime\Main.java
import com.*;
import edu.*;
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

javac Main.java (2)


(1) package
:

import
package
(
package)-classpath .java
.class default package
src\comtime\CA.java NU.java

javac Main.java (3)


:

com edu package


CA
package CA:
1. import Main.java
src\comtime\Main.java
import com.CA;
import edu.*;
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

2. ( . )
src\comtime\Main.java
import com.*;
import edu.*;
public class Main
{
public static void main(String args[])
{
com.CA ca = new com.CA() ;
}
}

com.CA

Main.java src\com\CA.java

Main.java
src\comtime\Main.java
import com.*;
import edu.*;
import outer.*;
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

javac Main.java (4)
:

outer

javac classpath .. Main.java (5)


:

edu package
javac classpath ..;. Main.java (6)
package
package CA:

Main.java
src\comtime\Main.java
import com.CA;
import edu.*;
import outer.*;
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

javac classpath ..;. Main.java (7)


? src\com CA.java

:
javac classpath .;.. Main.java (8)
src\comtime\com CA.java

java java

:
:(3)

1.

-
-classpath 1 .

CLASSPATH
CLASSPATH

.

-
-classpath

CLASSPATH
CLASSPATH

,
(.)

CLASSPATH -classpath

(7)(8):
:(7)(8)

(7) (8)

1 . 1 ..
2 .. 2 .

package:
: package

2.

import packagename.*; 1 D:\test

import packagename.classname 2 C:\p.jar
,packagename
./.

3.
,

:
javac classpath d:\test;c:\p.jar test.java
test.java
import A.B.* ;
import C.D ;
d:\test A\B
d:\test\A\B c:\p.jar
A\B package A.B does not
exist d:\test\C\D.class
d:\test\C\D.java( c:\p.jar )
package public( package
) cannot resolve
symbol

(4) package outer does not exist?


-classpath
CLASSPATH.
src\comtime outer (5)
-classpath.. src\comtime
src src edu
package edu does not exist
(6)

:(7)

1.

import packagename.classname
, 1 com.CA

2.

import packagename.*, 1 com.*

1 outer.*

.

import com.CA;
import edu.*
import outer.*

,
.
:
:

?
(packagename.classname)

Yes No

default package,
,
,
? ?

Yes No Yes No


, , Package

. .
(make) (make)

(1)(2)
(3)
com.CA ca = new com.CA() ;
(7)(8):
:package ()

Yes No


? ,
?




,

, ,

? .
(make)

(3)

import com.CA ;

(7) com.CA
CA
..\com\CA.class ..\com\CA.java src\com
CA (8) .\com\CA.class
.\com\CA.java src\comtime\com CA.java
(6)
:
src\comtime\Main.java
import com.CA;
import edu.CA;
import outer.*;
public class Main
{
public static void main()
{
CA ca = new CA() ;
}
}

Java :
1. import C/C++ include
2. import import x.y.*

Java

import java.*.*
?
Java import C/C++
namespace include
X.A X.B.C
import X.* ;
import X.B.* ;

:
C c1 = new C();

import X.* ;
C

import

javac.exe Hash
Table

package
import
package import :
: package


Make,

package ;
make()
package

make
src\com
javac CA.java
CA.java
src\com\CA.java
package test;
public class CA
{
}
package

package import
make

Java
Java Java class
.class (.java)
.class :
MultiClass.java
class A
{
class C
{
}
}

class B
{
public void test()
{
class D
{
}
}
}
MultiClass.java
:
A.class
A$C.class
B.class
B$1$D.class

MultiClass.java

Javac MultiClass.java

A.class B.class A$C.class B$1$D.class


static link (.exe)
(Windows DLLUNIX share
object) Java


src\comtime\Main.java
import com.CA;
import edu.*;
import outer.*;
public class Main
{
public static void main(String args[])
{
CA ca = new CA() ;
}
}

src\comtime\com\CA.java
package com;
public class CA
{
}
(8)
src\ccomtime\Main.class src\comtime\com\CA.class
:
java Main (9)

CA.java :
src\comtime\com\CA.java
package com;
public class CA
{
public CA()
{
System.out.println(New CA) ;
}
}
src\comtime\com\CA.java CA.java
(9):
Main.java
CA.java
Java :
java verbose Main (10)
:

(Run-time) Package
Java
?
:
src\comtime\Main.class :

src\comtime\com\CA.class

Main.java import
(import
)Main.class CA
com/CA CA.class
package com\CA

,


.


,
.

,
Exception

(9) Main.class
-classpath CLASSPATH
.()
Main.class Main.class
.\Main.class Main.class
src\comtime Main.class

Main.class com/CA.\com\CA.class
CA.class CA.class com/CA
src\comtime\com

java classpath .. Main
:

Main
Main.class

package
import :
A.java
package edu.nctu.mot ;
public class A
{
public static void main(String[] args)
{
System.out.println("I'm A") ;
}
}
:
1 javac edu.nctu.mot.A.java

.
edu.nctu.mot.A.java
./

2 javac -classpath .\my\edu\nctu\mot A.java

.\edu\nctu\mot
A.java A.java make

A.java
3 javac -classpath d:\my\edu\nctu\mot A.java

d:\my\edu\nctu\mot
A.java A.java make

A.java
4 javac d:\my\edu\nctu\mot\A.java

:
1 java edu.nctu.mot.A

..
/.\edu\nctu\mot A.class
2 java -classpath .\edu\nctu\mot A
.\edu\nctu\mot
A.class A.class
edu.nctu.mot package
.\edu\nctu\mot\edu\nctu\mot

3 java -classpath d:\my\edu\nctu\mot A
d:\my\edu\nctu\mot
A.class A.class
edu.nctu.mot package
.\edu\nctu\mot\edu\nctu\mot

4 java d:\my\edu\nctu\mot\A
.

package import
Java

package import

You might also like