728x90
이번에는 IDE와 인터넷 없이 2개의 자바 파일 (
*.java
)을 생성한 후 한 번에 컴파일 후 실행하는 것을 시도했다.일반적인 프로젝트는 단일 파일을 실행하는 일이 없기 때문에 이것이 조금 더 현실적인 방식이다.
실행 전 계획
첫 실습#1에서는 단일
Helloworld.java
를 작성하여 Helloworld
클래스 안에 main
함수를 작성하였다.이번에는
MainApp.java
를 작성하여 여기의 main
함수에서 Helloworld.java
를 호출하여 Hello
를 출력하도록 하였다.


역시나 계획은 있었지만 시도하면서 다양한 에러가 뜨고 헤맸다......ㅎ
실전은 쉽지 않다ㅠㅠ
시도 과정
1. error: cannot find symbol
을 보면서도 에러 줄을 제대로 읽지 않아 시간 사용
javac HelloWorld.java MainApp.java
javac *.java
javac ./*.java
등과 같은 명령어들을 시도했는데 MainApp.java의 컴파일 과정에서 HelloWorld가 자꾸 찾을 수 없는 symbol로 떴다...
이때 에러를 눈여겨봐야 했는데 생각이 짧았다.
2. HelloWorld.java
먼저 컴파일 후 순차적 컴파일 시도
아래의 두 명령어를 순차적으로 실행하여 한 번에 한 파일씩 실행도 해보았다.
큰 기대 없이 시도해본 건데 역시나 안 됐다.
> javac HelloWorld.java
> javac MainApp.java
동일하게 error: cannot find symbol
발생~
3. 명령어에 문제가 있음을 의심해 javac -help
를 읽고 아래와 같은 명령어 시도
javac -help
를 실행할 경우 아래와 같은 도움말을 볼 수 있다.

이 중에서 -sourcepath <path>
를 이용하여 컴파일 소스 파일의 위치를 아래와 같이 실행하였는데 문제는 해결되지 않았다....
> javac -sourcepath . HelloWorld.java MainApp.java
그래도 새로운 명령어 하나 알게되었다...!
4. 뒤늦게 클래스 파일과 클래스명 HelloWorld에서 w가 소문자인 것을 발견해서 위 세 가지 방법으로 컴파일 후 MainApp.class
실행하여 "Hello"
출력
컴파일 에러를 다시 읽어보니 HelloWorld라는 symbol을 찾을 수 없다는 메시지였다
그리고 내가 작성한 자바 파일은 Helloworld.java
였고 클래스도 Helloworld
였다.....
대소문자 유의하기....메모..
w를 대문자로 고쳐준 다음 다시 컴파일하고 MainApp.class
를 실행시켜서 "Hello"를 출력했다.
배운 내용
- 에러 원인과 에러줄을 잘 보자
-help
유용하다- 여러
*.java
파일을 컴파일할 경우 사용 가능한 명령어는 여러 가지 있다 - 컴파일러는 정말 주어진 파일들만 충실하게 돌린다... class 파일이 존재해도 상관 없다
728x90
'Java' 카테고리의 다른 글
왜 자바 패키지는 com으로 시작할까? (Package Naming convention) (0) | 2023.01.07 |
---|---|
[IDE없이Java실습#3] 클래스 파일을 소스파일과 다른 위치에 생성하기 (0) | 2022.12.25 |
[IDE없이Java실습#1] 터미널로 인터넷 없이 자바 파일 컴파일 및 실행 (0) | 2022.12.20 |
[Java] 자바 입문기 - 오라클 로그인 없이 JDK 설치, 이클립스 (Eclipse) IDE 설치 (0) | 2021.12.24 |