JAVA1

내 힘으로 컴파일

소개

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

강의1

 

 

 

강의2

 

 

 

강의3

 

 

 

강의4

 

 

 

강의5

 

 

 

댓글

댓글 본문
  1. 싱와
    컴파일을 하는 과정에서 일어나는 일

    지금까지는 IDE와 같은 눈에 보기 좋은 곳에서 컴파일을 해왔다면..
    이제는 시~원한 아이스커피먹고 종료하고 싶은 터미널의 세계로 왔다..

    근데 사실 IDE에서는 버튼 하나만 누르면 되는거고, 여기서는 일일히 파일 찾아서 실행시켜주면 되는 일이긴 하다.
    이전에 PATH 환경변수 등록해놨으니까 더 편해지겠지...

    1. 일단 먼저 기존에 class 파일을 삭제해주자.. ide에서 실행했던 class 파일이다보니까 중복으로 class 파일이 생성되지는 않을거 아녀.

    2. (대충파일명).java 있는 파일 전체경로 복사해서 cd 로 이동해버리자잉

    3. 그 다음에 ls 로 파일들 잘 건사한지 확인하고잉!

    4. 건사하다면 javac (대충파일명).java 이용해서 컴파일하쇼잉! (javac의 c 는 compile 이라는 항간의 소문이 있슈!)

    5. 컴파일 했으면 class 파일 생성되었응께 이제 실행을 해봐야할거 아녀..

    6. java (대충파일명) 으로 실행시키면 파일 실행됩니다잉( 이때 class 확장자명은 안씁니다잉^^)

    7. 어떤 코드로 이루어졌는지 확인해보고 싶다잉~~? car (대충파일명).java 이용하면 싹다 확인가능합니다잉
  2. 싱와
    PATH 환경변수


    원래 cmd, terminal 과 같은 명령프롬포트 에서는 특정한 파일을 실행시키기 위해서는 일일히, 그 경로를 cd 명령어를 통해서 찾아 들어가야만 했었다.
    하지만 Path 환경변수를 이용한다면 쉽게 해당파일에 한번에 접근이 가능하다. 전체경로를 미리 환경변수 안에 등록해놓으면, 내 현재 위치와 상관없이 그 경로에 있는 파일들을 실행시킬 수 있는 장점이 있다.
    (사실 왜 아직 이게 장점이지? 라는 생각 안써봐서..개발을 해보면..알겠지..)
  3. 2010.10.11 완료!
  4. 준서
    mysqli의 악몽이...
    사라졌어요!
  5. d.minn
    2020.09.03 완료
  6. kekany
    고맙습니다..
  7. 포기금지
    제껀 왜 이러는지 Programing 폴더안에 파일이 없어요....
    이클립스에는 분명히 있는걸로 뜨는데... 왜이러죠...뭐 할때마다 저는 이러네요ㅠㅍㅍ
  8. 초보자바
    8/26 강의 1,2 완료
    2. cmd에 java또는 javac를 입력하면 위치가 나오고 설명서가 나온다. 이 이유는 Path 때문인데 내PC에서 속성에 들어가 고급설정에서 환경변수를 찾아 Path를 확인해보면 java의 경로가 입력되어 있끼 때문이다. 따라서 java의 위치가 나오지 않는다면 환경변수 Path에 java의 경로가 입력되어 있는지 알아보자.(이 Path를 이용하여 언제 어디서든 java를 이용할 수 있다.)
  9. 치디우기
    20200825 수강 완료
  10. mangjoong
    200813
  11. 재도전
    8/09 완료
  12. 남붕어
    [window 기준]

    2. cmd에서 java 입력시에 바로 위치가 나온다. 만약 위치가 나오지않는다면 시스템 환경 변수에서 path에 java가 들어있는지 확인하자.(만약 없다면 java 경로를 입력시켜주자) 이 작업은 이후 이클립스가 없어도 java를 cmd에서 작업 할 수 있도록 자바를 실행시켜주는 경로를 뚫는 일이다.
  13. 명령어로만 작동을 한다면 마우스를 사용하지 않아서 생산성이 높아지지 않을까요? 마지막 영상에서 맥os가 예쁘게 CLI를 보여주는게 참 맘에 드네요. 왜 맥쓰는지 조금 이해되었어요
  14. 하승연
    컴파일 하면 오류메세지라든지 그런건 전혀 안 뜨는데 윈도우라 dir로 확인해보면 class파일은 생성이 안되네요. 여기저기 구글링 해봤지만 결국 포기...ㅎㅎ
    밑에 분과 똑같이 could not find or load main class라고 뜹니다.
  15. 영철이
    2020.4.26 완료!!
  16. yechubot
    환경 변수,path에 자바 위치를 추가하면 어디서든 자바를 실행할 수 있다(기본적으로 되있다..?)
  17. 정찰스
    도움이 됐다니 다행이네요 ㅎ
    추가로 얘기드리면, 코딩한 텍스트 중 한글 등 영어를 제외한 외국어가 하나라도 이렇게 있으면 오류가 나옵니다.
    이런 식으로 귀찮게 하고 싶지 않으면, 그냥 주석이나 출력 등 평소에 한글로 쓰는 부분도 영어로 쓰면 얼추 해결이 될 수 있어요..ㅎ(영어 공부한다는 마음으로...)
    대화보기
    • 완젼 감사합니다!!!! 덕분에 바로 해결했어요 ^^!!
      대화보기
      • Error: A JNI error has occurred, please check your installation and try again 에러가 있으신분 계시나용?

        에러때문에 대체 왜그럴까... 매우 깊은 고민을 했었는데,
        https://monseden.tistory.com/26 이분 블로그를 찾아보니, 버전 문제네용

        근데 이클립스 Project 속성에서 Version 13으로 제 JDK 버전도 13이었거든요!
        뭐지.. 하다가 예전에 Java8 설치한것을 알게되서.. java8을 지웠더니 갑자기 잘되네용 ㅎㅎ 참고하셔요!
      • https://m.blog.naver.com......%2F

        이 블로그 한번 참고해보세요~
        대화보기
        • 생코짱
          javac 입력하려섯 클래스 파일로 컴파일 되셨다면 환경변수는 문제 없으신 것 같네요.
          에러 설명대로 main 클래스를 선언하지 않으셔서 그러신 것 같아요. 실행시 스택에 메인함수가 올라가서 실행이 되거든요. static void main(String[] args){} 부분이 있는 지 확인해 보세요
          대화보기
          • 정찰스
            *컴파일 실행 과정
            Program.class 실행 명령을 하면
            Java가 파일 이름과 같은 클래스를 찾고
            main(Method)을 찾은 후 그 안에 써진 코드를 순차적으로 실행해
            클래스 이름과 똑같은 java파일을 만들어 실행한다.

            *라이브러리 이용
            다른 사람들이 쉽게 쓸 수 있도록 잘 정돈된 프로그램을 라이브러리라고 한다.

            *명령어 이용 앱 실행을 통해 입력값을 넣을 시 좋은 점
            이 프로그램이 원하는 대로 동작하는지 여부를 쉽게 알 수 있다.
          • 정찰스
            ReadFile.java:17: error: unmappable character for encoding MS949 ArrayList<AmountVO> amountArr[] = new ArrayList[3]; //1. naver, 2. ?넗?뒪 異쒓툑 3. ?넗?뒪 ?넚湲?
            이런 식으로 나오는 경우엔
            MS949로 인코딩해서 에러가 발생하는 겁니다.
            UTF-8로 인코딩하도록 직접 지정해야 되네요.
            (코딩한 내용 안에 영문이 아닌 다른 문자가 있으면 MS949방식은 읽을 수 없습니다)

            javac Program.java -encoding UTF-8

            이렇게 치면 강의처럼 클래스 파일이 생성될 겁니다.
            (1시간 해멨습니다 ㅠㅠ)
          • 완료
          • ㅇㅇㅇ
            variable 파일을 다시 한번 살펴보시는 게 좋을 것 같아요
            대화보기
            • 감사합니당
              대화보기
              • 수영
                20200227
                공동공부랑 봤어요 숫자가 꽤 줄어들었네요
                구경모드지만 끝까지 완주하는데 목표를
              • 동그리
                라이브러리란? 코드 재사용 및 부품화 실현 등을 위한 하나 이상의 서브루틴 또는 함수의 집합을 의미한다. 라이브러리를 이용함으로써, 여러 프로그램에서 소스를 사용할 수 있음과 동시에, 소스를 제공하지 않음으로써 기술 유출방지를 실현할 수 있다.


                출처: https://saack.tistory.com/31
              • 잼있네요....^^
                감사합니다...
              • 칩과데일
                구경모드입니다.
              • C:\Users\LIMON\Desktop\practice\src에 위치해있는 variable.java를
                javac variable.java 입력해서 class파일까지는 만들어지는데
                java variable 를 입력하면

                Error: Could not find or load main class variable
                Caused by: java.lang.NoClassDefFoundError: practice/variable (wrong name: variable)

                라는 에러가 계속 뜹니다.

                참고로 환경변수 잘못 설정했나 싶어서 설치도 다시 가봤고 차근차근 자바도 다시 깔아봤습니다.
                시스템변수 사용자변수 다 설정했고, JAVA_HOME도 했고, 어떤 글에 시스템변수->PATH에 %JAVA_HOME%\bin;도 추가해봤는데 안 됩니다...왜이럴까요...
              • 취생아
                완료 2020.1.20
              • 라또마니
                화려하지 않지만......, 조으다.... 감사합니다.
              • 소금설탕
                완료. 고맙습니다.
              • 윌리엄
                org.opentutorials.iot 패키지를 직접 가져오면서 궁금했던 점이 swing과 같은 라이브러리는 어떻게 가져오는건지였어요. 방금 10분동안 혼자서 한참 파일 열어보면서 찾아다니다가 떠오른 생각이 java를 실행시키면 이미 jdk 폴더 안에 있는 라이브러리들은 자동으로 가져올 수 있는 거 아닐까 해서, 일반성을 잃지 않고 패러미터를 사용한 인자들만 입력해서 동작시켜봤는데 정상적으로 돌아가네요! 어떻게 명령하지도 않았는데 기본적으로 내장된 라이브러리가 동작할까요?

                웃긴 점이, eclipse에서 pakage explorer-JRE Library에 있는 파일들을 보면
                C:\Program Files\Java\jdk-13.0.1\jmods인데 우리가 환경변수로 컴퓨터가 찾을 수 있도록 등록한 path는 jdk-13.0.1까지만 디렉토리가 같은 bin 파일이에요. 즉, 컴퓨터에서 라이브러리를 직접 찾아서 연 게 아니란 말이죠. 우리가 같은 디렉토리에 있던 org파일을 연 것과 동작하는 방식이 달라요. java를 실행시키니 java에서 자동으로 라이브러리를 가지고 왔다는 말로 밖엔 설명이 안 되네요. 하긴, jdk-13.0.1 폴더에 들어 있던 파일들은 이미 다 세팅되어 있던거니 java에서도 미리 입력된 위치에 따라 라이브러리 파일을 들고 왔겠죠.

                또한, jmods 폴더는 org폴더와 다르게 다른 디렉토리 안에 넣어놔도 프로그램이 작동하네요. 저는 이게 왜 이렇게 작동하는지 잘 모르겠네요.

                ps. 위에 실험하면서 실수로 lib파일을 다른 디렉토리 안에 넣어놨어요. 그러니까 프롬프트에서 jdk-13.0.1안에 있는 lib 안에 있는 jvm.cfg를 열 수 없습니다. 라고 떠요. jvm. 우리가 저번 시간에 배웠던 Java Virtual Machine!! java에서 가상 머신을 실행시켜 프로그램을 동작시킨다고 했던가요? java를 직접 실행시켜도 java에서 가상 머신을 동작시키는 건 변함없네요. 그런데 이것으로 궁금해지는게 lib, 즉 library인데 eclipse에서 JRE Library를 열어보면 jmods에 있는 파일들이 보이는 이유는 뭘까요?
              • 윌리엄
                근데 신기한 사실을 발견했어요. 1부터 10,000,000까지 차례대로 출력하는 프로그램을 만들었었는데 통합 개발 환경에서 실행했을 때와 명령 프롬프트에서 실행했을 때 속도 차이가 나요. 통합 개발 환경에서보다 직접 컴퓨터에서 자바를 실행해 프로그램을 동작시켰을 때 실행 속도가 현저히 떨어집니다. 둘 다 저소음 모드 상태에서 통합 실행 환경의 경우에 1부터 1천만까지 출력하는데 1분 16초 19가 걸린 반면, 컴퓨터에서 자바를 실행해 프로그램을 동작시켰을 땐 37분 28초 72가 나옵니다. 왜 이런 결과가 나오는지 굉장히 궁금하네요.
              • 윌리엄
                저번 수업 때, 이클립스에서 패러미터를 사용해 값을 입력하는 이유가 궁금했는데 오늘에서야 알게되었어요. 이클립스 없이 자바를 실행할 때, 굳이 입력 라이브러리를 포함시키지 않고도 값을 입력할 수 있기 때문이군요. 이렇게 하면 디렉토리에 관한 신경도 덜 쓸 수 있겠지요. 사용자야 편하겠지만 우리는 매번 실행할 때마다 입력해주는 게 불편하다는 말도 이제서야 공감이 가요. 우리가 원하는 건 프로그램이 올바르게 동작하는지 실행해보려는 거니까요. 굳이 안내 테스트 입력 받지 않고도, 프로그램이 정상적으로 작동할 때에, 미리 자바가 계산할 수 있는 값들을 넣어 테스트 해보는게 더 편하네요. 다만 디버깅, 컴파일을 알아서 해주는 기능, 소스코드 확인 등등을 생각해보면 통합개발환경이 편하고요. 이클립스를 사용하지 않고 직접 앱을 실행할 때의 좋은 점은 아무래도 프로그램 하나를 덜 실행하는 점과 특정 입력 값으로 테스트할 때 편한 점이네요.
              • 쑤우
                수강완료. 감사합니다~
              • 김댕댕
                java.lang.UnsupportedClassVersionError 클래스 파일 실행시 에러발생하였습니다. 해당 링크대로
                클래스 파일을 다시 컴파일 하니 해결되었네요.^^ 알음알음 알아가는 재미가 쏠쏠 합니다.~~~~
                https://www.mkyong.com......or/


                라이브러리가 일종의 오픈소스라고 생각하면 되는 건가요? 라이브러리 검색을 어떻게 하는게 좋을지.... 또하나의 숙제인거 같습니다.
              • 무누우
                5번째 동영상에서, args로 따라 고쳤는데, 저는 왜 계속해서 dialog가 잘 생성될까요 -_-;;;

                아아아!!! 제가 컴파일을 안하고 .java 파일만 수정하고 실행했었네용 ㅋㅋㅋㅋㅋ

                .class 지우고, 다시 컴파일 하고 실행하니, 됩니당~~~
              • 햄쮸맨
                근데 참 희안한게 javac명령어는 두번 다 성공했는데 java명령어가 한번은 Program.class에서 성공했다가 두번 째 GoInHome에선 안되네요..허허..제 컴퓨터는 좀 까막눈인가봐요.잘 못찾네요..
              • 햄쮸맨
                패키지 개념도 그렇고 라이브러리나 클래스,객체.. 객체지향 프로그래밍의 모든 것은 재사용,재생산을 통한 생산성 향상이라는 철학이 담겨있네요!와 맛깔난다!
              • 햄쮸맨
                전 클래스 파일은 한방에 생성됐는데 클래스 파일 실행이 안되다가 java -cp "." Program 하니까 되네요.근데 program.class 클래스 안에 딱히 객체가 없어도 클래스 자체만으로도 메소드는 돌아가네용. 클래스 자체가 하나의 객체가 된건가용? 어차피 클래스는 객체의 집합이니 원소가 없는 공집합이나 뭐 그런걸로다가 생각하면 될까요? 이건 재미있네요!
              • 햄쮸맨
                으헝 두번째 영상 javac쳐도 명령어가 안나오네요. ㅎㅎ;
                제가 깐건 자바(JRE)랑 이클립스 만이고 JDK가 아니라서 javac가 안되나봐요!와! 대박! JDK깔러가야쥥!
                허허 이거 하나 해결하는 것도 재미있네요. 직접 검색해서 JDK 깔고 시스템 변수 다시 설정해주고 재미있당ㅎㅎ.와 근데 모르고 시스템 변수 고치다가 기존 목록 홀라당 날아가서 그거 또 해결하는데 재미있네욬ㅋㅋㅋㅋㅋㅋㅋ앜ㅋㅋㅋㅋㅋㅋ 덕분에 여러가지를 배워갑니다.
              • 오늘은 구경만했네요 언젠가 필요할때 다시 돌아올게요~
              • 기봉기봉
                어렵네요. 실습하려다가 계속해서 구경만했습니다. ㅜㅜ
              • egoing
                앗 수정했습니다!
                대화보기
                • leehan
                  유튜브 채널 JAVA1
                  19/10/18 게시된 영상 목록 중
                  12.1, 2, 3, 4, 5 (직접 컴파일하고 실행하기)
                  12.3, 4, 5 중복 업로드 됐습니다
                • polyeffect
                  (윈도우한정) 자바 실행시 버전 에러 나시는 분들은 환경변수 설정에서 '시스템 변수' 에 제일 상단에 jdk-13/bin 폴더를 추가해 주시면 됩니다. 컴파일 버전과 런타임 버전이 달라서 생기는 문제입니다.
                • 매직
                  잘학습했습니다. 감사합니다. ^^
                버전 관리
                egoing
                현재 버전
                선택 버전
                graphittie 자세히 보기