즉 JVM은 어려운 개념이 아닌, class파일을 실행시키기 위한 프로그램으로 생각하면 편하다
public class Hello { //클래스명
public static void main(String[] args) { // 메소드명. JVM이 명령문을 시작하는 입구
System.out.println("Hello World!"); // 명령문
}
}
C:\Users\AAAAAAA\eclipse-workspace\test\src>javac -d ../bin Hello.java
현재 폴더의 Hello.java 파일을 컴파일한후 폴더 상위로 간 후 그 안에 bin 이란 폴더에 class 파일을 넣을 때 사용한다.
C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/Hello.java
현재 폴더 안에 있고 src폴더 안에 있는 자바 파일을 컴파일하고, 현재 폴더 안에 있는 bin이란 폴더에 class 파일을 넣을 때 사용한다.
C:\Users\AAAAAAA\eclipse-workspace\test\src>del *.class
src 안에 있는 다음 확장자파일(*.class)을 모두 삭제할때 사용한다.
C:\Users\AAAAAAA\eclipse-workspace\test>java -classpath bin Hello ->
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin Hello (같은거)
이 폴더 안에 있고, bin 안에 있는 컴파일된 Hello를 실행할때 사용한다.
명령문보단 코드라는 표현이 더 정확하긴 하다
컴파일
C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/lang/Test1.java
실행
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin lang.Test1
TEST1
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin lang/Test1
TEST1
컴파일
C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/lang.Test1.java
error: file not found: src\lang.Test1.java
Usage: javac
use --help for a list of possible options
실행
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin/lang Test1
Error: Could not find or load main class Test1
Caused by: java.lang.NoClassDefFoundError: lang/Test1 (wrong name: Test1)
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin Test1
Error: Could not find or load main class Test1
Caused by: java.lang.ClassNotFoundException: Test1
JAVA IDE 도구에서는 보통 자동 컴파일을 수행한다.
1) 컴파일된 코드를 한 개의 실행파일로 합치치 않는다.
2) 소스파일을 변경할 때 각 파일마다 컴파일한다.
C & C++과 같은 기존 프로그래밍 언어는 수동 컴파일을 수행한다.
1) 컴파일, 링킹 순으로 하나의 .exe파일을 만든다.
2) 보통 여러 파일의 코드를 변경한 후 한 번에 컴파일한다.
이클립스 IDE 폴더 구조는 다른 IDE들과 호환되지 않는다.
그래서 특정 IDE에 종속되지 않는 프로젝트 폴더 구조인 MAVEN 빌드 구조를 사용한다.
1) gradle을 다운받은 후 c드라이브 tools폴더에 설치한다.
2) 환경변수 path에 C:\tools\gradle-7.3\bin을 추가한다.
3) 프로젝트 폴더로 사용할 디렉토리를 생성한다
ex) C:\Users\AAAAAAA\git\bitcamp-study\java-lang
4) cmd에서 $ gradle init명령어를 사용하여 프로젝트 폴더를 구성해준다
C:\Users\AAAAAA\git\bitcamp-Study\java-lang>gradle init
Starting a Gradle Daemon (subsequent builds will be faster)
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3
Split functionality across multiple subprojects?:
1: no - only one application project
2: yes - application and library projects 1
Select build script DSL:
1: Groovy
2: Kotlin---> 50% EXECUTING [1m 56s]
Enter selection (default: Groovy) [1..2] 1
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4] 1
Project name (default: java-lang):
Source package (default: java.lang): com.eomcs.study
> Task :init
Get more help with your project: https://docs.gradle.org/7.3/samples/sample_building_java_applications.html
BUILD SUCCESSFUL in 9m 22s
2 actionable tasks: 2 executed
C:\Users\AAAAAA\git\bitcamp-Study\java-lang>tree
폴더 PATH의 목록입니다.
볼륨 일련 번호는 4091-566D입니다.
C:.
├─.gradle
├─app
│ └─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─eomcs
│ │ └─resources
│ └─test
│ ├─java
│ │ └─com
│ │ └─eomcs
│ └─resources
└─gradle
└─wrapper
C:\Users\AAAAAAA\git\bitcamp-Study\java-lang>
5) 이클립스용 프로젝트 설정파일을 생성한다.
plugins {
id 'java' // 자바 빌드관련 작업을 수행할 수 있는 도구를 추가한다.
id 'eclipse' // 이클립스 관련 작업을 수행할 수 있는 도구를 추가한다.
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.13.2'
implementation 'com.google.guava:guava:30.1.1-jre'
}
6) .project, .classpath, .setting 파일이 java-lang 폴더 안에 생성되었는지 확인한다.
7) eclipse에서 java-lang 폴더를 import한다.