상세 컨텐츠

본문 제목

윈도우 명령창에서 자바 프로그램 돌리기

java

by Riella 2021. 1. 28. 15:49

본문

728x90

출처: 환경 변수 설정, 환경 변수 설정 2, cmd 명령어, 클래스 경로 1, 클래스 경로 2,

 

자바 복습을 하는데 매번 이클립스, bitbucket 같은 곳에서 돌리다 보니

명령창(cmd)에서 돌리는 방법을 잊었다 (헐;;)

그래서 복습 겸 잊지 말자는 마음으로 나름 자세히 적어보았다.

 

자바는 이미 깔았다고 가정하에 적는 거라

아직 다운로드 안 했으면 고고(jdk 다운로드 링크)

 

보통 자바 깔고 jdk경로를 바로 설정해주는데... 안 하고 이클립스에서만 돌리고 있었다. (반성)

명령창에서 자바 프로그램을 컴파일하려면 jdk(Java Development Kit) path가 설정되어 있어야 한다.

그래서 그것부터 차근차근 적어볼 예정이다.

 

 

[JDK 환경 변수 설정하기]

환경 변수를 하단 돋보기에 치면 '제어판' - '시스템 환경 변수 편집'이 뜬다 클릭.

(클릭해서 가려면: 제어판-시스템 및 보안-시스템-왼쪽의 '고급 시스템 설정')

 

아래 사진처럼 사용자 변수에 JAVA_HOME에 jdk path를 더해주고

시스템 변수 Path에다 ...[jdk-version]/bin을 더해줄 예정인데

 

우선 사용자 변수부터! 환경 변수-> 새로 만들기를 클릭해준다.

 

환경 변수 -> 새로 만들기 클릭

이름은 JAVA_HOME,

변수 값은 파일 탐색기를 열어서 로컬 디스크 C - Program Files - jdk-(버전 이름) 클릭하고 경로를 복붙해준다.

탐색기는 아직 끄지 말고 확인을 눌러준다.

새 사용자 변수 추가 후 확인

그리고 시스템 변수의 Path를 찾아 더블 클릭 -> 새로 만들기

아까의 파일 탐색기에서 bin파일에 들어가 경로 복붙을 해준다.

이제 컴파일은 잘 될 거다.

확인하고 싶으면 cmd창 키고 (돋보기에 cmd 검색 - 클릭) 아래의 명령어를 쳐서 버전을 확인해보자.

javac -version
>> javac xx.x.x (version name)

 

확인되었으면 cmd에서 자바 파일이 있는 곳으로 간다. (없다면 밑으로 건너뛰자)

[명령창에서 파일 사이 돌아다니기]

(dir로 파일 이름들 보고 cd 디렉터리 이름을 적고 enter 누르기 / 잘못 들어가면 cd .. 누르고 enter.)

알고 있겠지만 모른다면 참고

//조금 더 멋진 방법
cd (디렉토리의 첫 글자)
cd d
// tab키를 누른다
(자동완성됨 ㅎㅎ)
원하는 파일이 아니면 나올때까지 tab

이미 알고 있었다면 ㅈㅅ.

 

자바 파일이 없다면 하나 만들어 주자.

[자바 파일 만들기]

mkdir test // 자바 파일 보관할 파일 만듦
cd test
echo a > "Sum.java" // Sum.java 라는 파일 만들고 안의 컨텐츠는 일단 a라고 해둠
notepad Sum.java // 메모장에 아까만든 자바 파일이 뜸
// 거기에다 아래 코드 복붙
public class Sum {
	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		int c = a + b;
		System.out.println("Sum of a and b is " + c);
	}
}

솔직히 그냥 메모장 키고 아래 코드 복붙 -> 이름을 모든 파일 누르고 Sum.java로 저장하는 거랑 같다 ㅋㅋㅋ

참고용 사진 (아래서 할 컴파일이랑 돌리는것도 한 모습)

 

[컴파일]

이제 한 번 컴파일해보자. 명령어는 아래와 같다.

javac [file_name].java
// 예시
javac Sum.java
javac Words2.java

컴파일 후 모습

컴파일을 하고 dir명령어를 치면 .class 파일이 생긴 걸 확인할 수 있다.

드물겠지만, 한 폴더 안의 모든 자바 파일을 컴파일하거나

혹은 여러 자바 파일을 한 번에 컴파일하고 싶으면 아래처럼 하면 된다.

// 한 파일 안의 모든 자바 파일 컴파일
javac *.java

// 여러 파일 컴파일 할 경우
javac [java_file_name].java [another_file_name].java
// 예시
javac java1.java java2.java java3.java

 

컴파일이 되었으면 이제 런하면 된다.

[자바 프로그램 돌리기]

java [file_name] // .java 확장자는 없어야함
java Sum

>>Sum of a and b is 3

 

[패키지가 있는 경우]

하지만 이클립스와 같은 ide에서 코드를 작성하고 돌리려 하면 ClassNotFoundException이 뜨면서 잘 안 돌아간다.

보통 컴파일한 파일 위치에 제대로 있는데 이런 에러가 난다면 저절로 생기는 패키지로 인한 에러이다.

예시를 들기 위해 위의 코드를 이클립스에서 프로젝트로 만들어보았다.

디폴트 패키지가 있는 파일 구조

명령창 상에서는 오른쪽과 같이 src라는 파일 안에 있다면 아래처럼 명령어를 적어주면 된다.

// 둘다 상관 ㄴㄴ
java -cp . Sum
java -cp .; Sum

더 정확히는 java -cp [클래스 경로] [패키지 이름].[클래스 이름]을 적어주면 되는데

default package 같은 경우는 이름이 없으므로 패키지 이름이 생략된 것이다.

그래서 classpath는 지금 위치를 나타내는 .(점)을 적고 클래스 이름인 Sum만 들어간 거다.

패키지 이름이 sum이다.

위에처럼 sum이라는 패키지가 있다면 명령어는 아래처럼 될 거다.

java -cp . sum.Sum
java -cp .; sum.Sum

지금 좀 아차 싶은 게 컴파일은 자바 파일이 바로 있는 sum 패키지 안에서 했는데 파일을 돌릴 때는 src파일에서 했다.

src파일에서 컴파일과 돌리는 걸 같이하면 컴파일할 때 패키지 경로부터 적어주면 된다.

javac [자바 폴더까지의 경로]/[자바 파일 이름].java
// 예시
javac ./sum/Sum.java

// 그리고서 위에 코드처럼 돌려주면 됨

이클립스 프로젝트 컴파일 & 런

 

여기까지 읽었으면 어떤 걸로 프로그램을 만들었든 잘 돌릴 수 있을 거라 생각한다.

하지만 이쯤 되면 굳이 자바 파일이 있는 폴더까지 가서 돌려야 하나 싶은 생각이 들었다.

이글에 다 적으려 했지만 너무 길어지는 것 같아서 이 이야기는 따로 글을 만들 생각이다.

 

링크

[클래스 경로] - 상위 폴더에서 자바 프로그램 돌리기

 

긴 글 읽어주셔서 감사합니다 :)

관련글 더보기

댓글 영역