[오라클자바커뮤니티,자바학원,JAVA학원,JSPJDBC학원]자바패키지컴파일,java package compile, javac -d, java -cp, 현재디렉토리(.)
현재 별다르게 환경변수에서 클래스패스 설정은 하지 않았다.
1. 아래의 3개 자바파일(Shape.java Circle.java, Rectangle.java)을c:\java\project\source에 만들자.
//Shape.java
package shape;
public abstract class Shape {
protected int posX, posY;
public abstract void draw();
}
//Circle.java
package shape;
public class Circle extends Shape {
public void draw() {
System.out.println( "동그라미 그림..." );
}
}
//Rectangle.java
package shape;
public class Rectangle extends Shape {
public void draw() {
System.out.println( "네모 그림..." );
}
}
2. -d option을 이용하여 자바 컴파일을 해보자.
c:\java\project\source>javac -d c:\java *.java
위 3개의 클래스가 package shape 구문을 포함하고 있으므로 c:\java 아래 shape 폴더를 만들고 그안에 컴파일된 클래스 파일이 위치한다.
3. 이번에는 위에서 작성한 클래스를 사용하는 c:\java\project\MyApplication.java 파일을 만들다.
import shape.*;
class MyApplication {
public static void main( String[] args ) {
new Rectangle().draw();
new Circle().draw();
}
}
먼저 컴파일을 해야 하는데 MyApplication.java 파일의 맨위에서 import shape 했으므로 클래스패스 루트아래 shape 폴더가 있어야 한다.
만약 c:\java\project>javac MyApplication.java 라고 한다면 다음과 같은 오류가 발생한다.
C:\java\project>javac MyApplication.java
MyApplication.java:1: error: package shape does not exist
import shape.*;
^
MyApplication.java:5: error: cannot find symbol
new Rectangle().draw();
^
symbol: class Rectangle
location: class MyApplication
MyApplication.java:6: error: cannot find symbol
new Circle().draw();
^
symbol: class Circle
location: class MyApplication
별다른 클래스패스 설정을 하지 않았으므로 현재 폴더는 클래스를 찾는 기본 폴더이다.(클래스패스 루트) 현재 폴더 기준으로 shape 폴더가 없으므로 오류가 발생하는 것이다.
그래서 -cp 옵션으로 컴파일시 클래스패스를 지정하자(c:\java)
C:\java\project>javac -cp c:\java MyApplication.java
4. 이번에는 MyApplication 클래스 파일을 실행해보자.
아래의 경우 MyApplication 클래스 파일은 현재 디렉토리에 있으므로 찾았지만,
소스코드에서 사용되는 shape 패키지의 Rectangle클래스 파일을 못찾아 오류가 발생했다.
C:\java\project>java MyApplication
Exception in thread "main" java.lang.NoClassDefFoundError: shape/Rectangl
at MyApplication.main(MyApplication.java:5)
Caused by: java.lang.ClassNotFoundException: shape.Rectangle
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
아래처럼 해보자.
C:\java\project>java -cp c:\java MyApplication
오류: 기본 클래스 MyApplication을(를) 찾거나 로드할 수 없습니다.
이번에는 명령행에서 -cp 옵션으로 클래스패스를 기술했기 때문에 오로지 그 경로에서만 클래스를 찾게되어
MyApplication 클래스 파일을 못찾은 경우이다.
결론적으로 아래와 같이 하면 된다.
C:\java\project>java -cp c:\java;. MyApplication
네모 그림...
동그라미 그림...
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/28)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/28)[기업100%환급]안드로이드개발자과정
(8/04)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(8/04)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(8/08)[기업100%환급]SQL기초에서 Schema Object까지
(8/08)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(8/11)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/24)SQL기초에서실무까지
(7/29)안드로이드개발자과정
(7/29)Spring3.X, MyBatis, Hibernate실무과정
(8/04)웹퍼블리싱 마스터
(8/05)JSP,Ajax,jQUERY,Spring,MyBatis,Hibernate속성과정
(8/08)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(8/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/26)Spring3.X, MyBatis, Hibernate실무과정
(7/26)개발자를위한PLSQL,SQL튜닝,힌트
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)안드로이드개발자과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/23)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/28)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/28)[기업100%환급]안드로이드개발자과정
(8/04)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(8/04)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(8/08)[기업100%환급]SQL기초에서 Schema Object까지
(8/08)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(8/11)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/24)SQL기초에서실무까지
(7/29)안드로이드개발자과정
(7/29)Spring3.X, MyBatis, Hibernate실무과정
(8/04)웹퍼블리싱 마스터
(8/05)JSP,Ajax,jQUERY,Spring,MyBatis,Hibernate속성과정
(8/08)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(8/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/26)Spring3.X, MyBatis, Hibernate실무과정
(7/26)개발자를위한PLSQL,SQL튜닝,힌트
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)안드로이드개발자과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/23)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
댓글 없음:
댓글 쓰기