JAVA1

내 힘으로 컴파일

소개

이클립스 없이 직접 컴파일하고, 실행하는 방법을 알아봅니다. 이클립스에서 독립합시다! 
 
 
 

강의1

 

 

 

강의2

 

 

 

강의3

 

 

 

강의4

 

 

 

강의5

 

 

 

댓글

댓글 본문
  1. 코딩뿌셔본다
    컴파일Compile!
    ① Comile ! .java 확장자가 붙은 소스코드를 .class 확장자가 붙은 실행파일로 바꾼다.
    ② Run ! 클래스 확장자가 붙은 파일을 실행한다.
    ③ Input ! 실행할 때 입력값을 주어 입력값마다 다르게 동작하는 출력값을 만든다.

    어떻게 java라고 명령을 내렸을 때 이 명령이 실행되는 이유가 뭘까?
    그것은 path 라고 불리는 환경변수 때문인데...
    윈도우에서는 내 PC 우클릭>속성>고급 시스템 설정>고급>환경 변수>(사용자)에 대한 사용자 변수>path>jdk가 설치된 경로를 작성해 환경변수 설정이 가능하다.

    낯설고 건드리면 안될것처럼 생겼던 명령 프롬프트에 직접 과감하게 클래스를 찾게 하고 그 안의 코드를 읽게 만들고... 적는 것에 따라 꼬박꼬박 잘 대답하는 cmd를 보니 굉장히 신기하다.
  2. TYPP
    2022.05.03 완료
  3. 육도
    2022.04.30 완료
  4. kinioh
    220318
  5. 220318 완료
  6. 윤원
    220214 완료
  7. 열정jk
    220206 감사합니다
  8. KeiJx2
    2022/02/03
  9. 22/02/02
    처음부터 잘못됐나..? 한번 다 보고 다시 한바퀴 돌기
  10. 나연
    2021년 1월 31일 (월) 완료

    ```bash
    # Ubuntu
    $ readlink -f $(which java)
    $ readlink -f $(which javac)
    ```

    Path (환경변수)
    - User variables
    - System variables

    ```bash
    # Mac or Linux
    $ echo $PATH
    $ nano ~/.bash_profile
    ```

    ```bash
    # Windows
    $ cd # Then right-click to paste the thing copied
    ```

    ```bash
    # Windows
    $ javac <java-file>
    # If error
    $ javac -cp "." <java-file> # cp stands for classpath; "." means the current dir
    $ java Program # Don't include .class at the end of "Program"
    $ type Program.java # Windows equivalent of the Unix command "cat"
    ```

    Java source code (`Program.java`) -- Compile: `$ javac Program.java` --> Java application (`Program.class`) -- Run: `$ java program` --> Java Virtual Machine -- `Program.main` --> computer

    Package

    ```bash
    # package is now under /lib
    $ javac -cp ".;lib" GoingHome.java # In Mac and Linux, use : instead of ;
    $ java -cp "lib" GoingHome # Tells Java that GoingHome is under /lib
    $ java -cp ".;lib" GoingHome # "lib"이라고만 하면 "lib" 안에서만 찾음 (같은 디렉토레에서 찾지 않음). 따라서 .이 필요
    ```

    Exception: 자바에서의 error

    Library

    ```bash
    $ tree .
    ```

    ```bash
    # After moving /org out of /lib
    $ java GoingHome "507 Java Apt" 15.0
    ```

    =====
    윈도우 cmd에서 `tree` 작동 안 되는 분들:
    환경변수에 C:\Windows\System32 추가하면 됩니다.
    =====
    error: unmappable character (0x80) 뜨면
    `$ javac -encoding UTF-8 <java-file-name>` 이렇게 `-encoding UTF-8` 플래그를 넣으면 됩니다.
  11. 카멜리안_최유리
    20220127 완료
    1. javac 파일명 -> compile해서 .class파일로 변환
    2. cd 경로 : 디렉토리 변경
    3. javac -cp ".;lib" OkJavaGoinHome.java
    4. java 파일명 : 파일 실행
    5. 입력값주기 : OkGoinHomeInput "Java APT 507" 15.0
    6. dir
  12. BrightenTheWorld
    javac를 이용해서 우리가 보기 편한 소스코드들을 이용해서 만든 .java 확장자를 compile 해서 컴퓨터가 읽을 수 있는 .class 파일 확장자로 변환해줄 수 있다.
    여러 class 파일들을 모아둔것을 package 라고 하고, 자바 라이브러리는 일반 폴더 구조에서 볼 수 있는 계층적 패키지 구조를 가지고 있다.

    cmd에서 디렉토리를 변경하는 법:
    cd C:\Users\Usersname\eclipse-workspace\Programing

    .java파일을 class파일로 compile 하는법:
    org 패키지 파일이 하위 디렉토리에 숨어있어서 오류가 난 경우 -cp 또는 -classpath를 이용하여 "."는 현재 디렉토리, ".;lib"는 현재 디렉토리의 lib 파일을 경로 지정 해줘서 compile 할 수 있다.
    javac -cp ".;lib" OkGoingHome.java

    class파일을 실행하는법
    java -cp ".;lib" OkGoingHome

    매개변수 args를 cmd에서 입력하여 설정 하는법:
    java -cp ".;lib" OkGoingHomeInput "Java APT 507" "15.0"
  13. 金兌泳
    javac를 입력하면
    The operation couldn’t be completed. Unable to locate a Java Runtime that supports javac.
    Please visit http://www.java.com for information on installing Java.
    라는 문구가 뜹니다. 도와주세요..!
  14. 金兌泳
    맥을 사용하고 있는데 경로에 javac가 보이지 않네요. 어떻게 해결하면 될까요? java는 있는데 javac가 없어요!
  15. 낀찐
    2022.01.13 완료
  16. 김나루
    21 12 26
  17. 김한솔
    21-12-20 / 강의 12.3까지 듣고 패스
  18. 김휘철
    잘 봤습니다~
  19. syh712
    1. 자바확장자가 붙은 소스코드를 클래스 확장자가 붙은 실행파일로 바꾸는 것.
    2. 클래스 확장자 파일을 실행(런)하는 것
    3. 입력값을 주기.
    -----
    1) cmd > java > 환경변수(내컴퓨터 속성 > 고급설정 > 환경변수> 커맨드 명령어 입력시 설정되는 디렉토리 설정)
    2) cd => change directory C:\Users\...
    3) javac Program.java => to generate java.class file.
    4) java -cp "." Program
    cp=> class path
    . =>현재 디렉토리
    *javac 명령부터 안된 걸 보니 .. 일단 구경모드.
    ----
    window는 구분자로 ;를 사용.
    javec -cp ".;lib" OkjavaGoInHome.java

    다른 사람이 만든 잘 정리된 프로그램을 라이브러리라고 함. 혼자서 개발 다 하지 않음. 어떤 라이브러리 있는지 살펴보는 것. 견문넓히는 일.

    명령어로 앱실행시 입력값을 주면 어떤 점이 좋을까? 이클립스 같은 툴 사용하여 아규먼트 입력 받는 것보다 안에 내용만 바꿔서 실행하면 되기 때ㅜㅁㄴ에 입력값 주는 방법이 더 간편함.

    강의 4 : 라이브러리란 각종 다른사람들이 만든 method들를 import하여 그 기능을 내 프로그램에서 사용할 수 있도록 빌려 쓸수있는 method 도서관이다.
  20. 나자바바라
    2021. 11. 07.
  21. won4175
    2021.10.11
  22. 가람
    이후 복습 필
  23. 주간식당메뉴
    21.10.04. 슬슬 어려운 내용이 많이 나오네요. 앞으로 더 어려운 내요이 나오겠죠? 슬슬 복습의 필요성을 느낍니다.
  24. esther
    21.09.17
  25. everdoit
    새삼 신기하네요 감사합니다~
  26. 2021.08.26 완료
  27. 이마누
    완료
  28. labis98
    20210807 좋은 강의 감사합니다~~^^
  29. super1Nova
    210803
  30. cmd로 java실행하는 방법
    1.cd compile할 file의 경로 ctrl+v
    2.dir
    3.javac
    4.javac file.java (ex.Programming.java)
    *.class 생성된 것을 확인하려면 dir
    5.java file (ex.Proramming)
    *java에게 해당 파일을 실행하도록 명령

    Elevator.java에 첨부된 OKjava.java같이 다른 사람의 코드가 첨부된 소스 코드를 실행할 경우
    1.javac 실행할 file.java (ex.OKJAVA.java)
    이 경우 실행할 file만 javac로 컴파일해도 다른 사람의 코드 파일도 같이 .class 생성됨.
    즉, javac OKjava.java만 컴파일해도 Elevator.class파일도 같이 생성된다는 것.

    cmd로 java를 실행할 경우, imput을 사용하여 변수값을 쉽게 바꿀 수 있다.
  31. 피톤치드
    강의 5 : 이클립스와 같은 툴을 사용하여 아규먼트를 입력 받는 것 보다 " "안에 내용만 바꿔서 실행하면 되기때문에 입력값을 주는 방법이 더 간편하다.
  32. 피톤치드
    강의 4 : 라이브러리란 각종 다른사람들이 만든 method들를 import하여 그 기능을 내 프로그램에서 사용할 수 있도록 빌려 쓸수있는 method 도서관이다.
  33. 피톤치드
    강의 3 : 처음 javac 파일명.java로 컴파일을 할 시에 파일.class이 생성되고 java 파일명 으로 실행을 한다. 그럼 jvm을 통해 main메소드에 접근하여 우리가 코딩을 한 프로그램이 실행되어 컴퓨터에서 프로그램이 수행된다.
  34. 피톤치드
    강의 2 : path 란 컴파일을 할 때 java 혹은 javac를 입력시에 java.exe 혹은 javac.exe 파일을 찾아 실행하는 경로이다.
  35. web1님 감사합니다...최고...오늘도 강의와 수강생의 팁 덕에 배워갑니다 최고
  36. 2021.07.24
    개발환경없이 Java에서만 java 컴파일해서 실행하는 방법
    1) 환경 설정 확인
    2) 디렉토리 확인
    3) 컴파일 하기
    3-1) 외부 라이브러리 사용 안함
    3-2) 외부 라이브러리 사용하는 경우
    - 경로 다른 경우 -cp ".; lib'
    4) 입력값 부여하기
    - argument 입력하기
  37. 님들
    javac OkJavaGoInHome.java 쳤을때 오류 나면서 첫번쨰 문장쯤에
    java:10: error: unmappable character for encoding MS949
    System.out.println(this._id+" ?넂 Elevator callForUp stopFloor : "+stopFloor);
    이런거 비슷하게 뜨면
    원래 자바 코드를 utf-8인코딩으로 코드를 작성했는데 이 명령프롬프트(cmd)의 자바에서 MS949로 인코딩을 해버릴려고 하니까 인코딩 방식이 맞지않아 오류가 난거에요
    그러니까
    javac OKJavaGoInHome.java -encoding utf-8 이렇게 적어주심 됨요. 이거 뜻은 'OKJavaGoInHome.java를 컴파일 할떄 utf-8로 인코딩해라' 라는 소리입니다.
    그러면 cmd의 자바가 MS949로 더이상 컴파일 하지 않고 utf--8로 인코딩을 하게 되어 인코딩 형식이 서로 똑같아 오류가 해결될겁니다


    그리고 위의 상황을 해결한뒤 두번쨰,
    javac -cp ".;lib" OKJavaGoInHome.java 이렇게 쳤는데 계속 파일이 같은 위치에 있지 않아 오류가 뜨면 ".; " 여기 사이에 자신이 programming 파일에 새로 생성한 파일명과 이름이 똑같게 적어주시면 됩니다.


    그래서 바꿨더니 또 MS949 어쩌구 하면, 아직 org.opentutorials.iot 패키지 속의 여러 파일들(Elevator.java, Lighting,java 등등)은 utf-8로 인코딩이 안되었다는 소리겠죠?
    즉 위의 패키지속의 여러 .java 파일들도 utf-8로 인코딩이 되었지만 컴파일할때 MS949인코딩으로 컴파일을 해버려 서로 인코딩 방식이 맞지가 않아 오류가 일어난 겁니다. 첫번쨰 오류랑 비슷하죠?
    그러면 우리는 이렇게 적어줘야 합니다.

    javac -cp ".;lib" OKJavaGoInHome.java -encoding utf-8 이때 ".; " 여기 사이에는 programming파일안에 새로 생성한 파일 이름명을 똑같이 써주시면 됩니다. 꼭 lib일 필요 없음
    쩃든 그러면 이코드의 뜻은
    'lib파일 안에 들어있는 모든 .java파일들과 OKJavaGoInHome.java파일 둘다(javac -cp ".;lib" OKJavaGoInHome.java)' 'utf-8인코딩으로 컴파일해라(-encoding utf-8)' 라는 소리입니다.

    저는 위의 문제들을 https://thelibraryofbabel.tistory.com......%9C 여기서 참고 했습니다!


    ++'?냇' 이거는 화살표 표시가 변환되지 않아 한글로 써진것입니다, 신경 안쓰셔도 되요!
  38. Jaemin Lim
    21.07.14
  39. 조유빈
    2021.07.12 완료
  40. 초딩 개발자
    2021/06/11
  41. 미래프로그래머
    210607 다시 보러 오자.. 너무 어렵다
  42. ppapcorn
    210601 나중에 다시 보기
  43. Aaron81
    210513
  44. jeisyoon
    2021.04.29 Java Source Compile & Run Without Eclipse - OK

    >javac -cp ".;lib" OkJavaGoinHome,java - OK
    >java OkJavaGoinHome "Busan Apt 501" 30.5 - Ok
  45. 무브건
    위 댓글과 같은 문제가 일어났을 경우 12.4 강의 중 후술할 다음 문제도 일어났을 가능성이 높습니다.

    javac -cp ".;org" OKJavaGoInHome.java 실행했을 시
    "class file has wrong version 59.0, should be 52.0"
    같은 오류가 뜬다면 이 또한 개인 블로그에 해결방법을 정리해두었습니다.

    https://blog.naver.com......e=1
    대화보기
    • 무브건
      compile 된 class 파일을 실행시킬 때 java -cp "." Program까지 해봤는데
      "Exception in thread "main" java.lang.UnsupportedClassVersionError"
      같은 오류가 뜬다면
      https://blog.naver.com......e=1
      개인 블로그에 해결방법을 적어놓았습니다.
    • OrzlHB
      완료!!
    • anya422
      완료!
    • 난길
      명령어로 앱 실행할 때 입력값을 주면 좋은 점은 간편하게 입력값을 변경하여 실행하고 결과를 확인할 수 있다는 것이다.
    • 난길
      라이브러리는 말그대로 도서관처럼 다른 사람이 쓸 수 있도록 정리해놓은 java파일들이다
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기