소프트웨어/Java

javac로 컴파일해서 class파일 얻기

개발자_이훈규 2014. 5. 16. 17:03

[문제]

javac를 잡은 다음에 

컴파일 해보니


Permission denied

란 에러가 발생했다.


[해결]

구글링을 하던 중 클래스 패스를 여러개로 구분하던 ; (세미콜론)을 :(콜론)으로 바꾸라고 하는 답을 찾았다.

http://forums.overclockers.com.au/showthread.php?t=109833


Permission denied은 사라졌지만 새로운 문제가 생겼다.







[문제]

컴파일을 해보니 아래와 같은 문장만 떴다.


javac: target release 1.4 conflicts with default source release 1.5



[해결]


찾다보니 이것은 크로스 컴파일의 문제였다.(당연하겠지만 확실히 집고 가는걸 좋아한다.)

따라서 크로스 컴파일의 문제만 해결이 된다면 된다!

-target 1.4 -source 1.4

이렇게 source를 추가해주니간 해당 오류메세지는 사라졌지만 다른 에러가 생겼다.







[문제]

하나의 에러를 해결하고 새로운 에러의 장이 열렸다.

Fatal Error: Unable to find package java.lang in classpath or bootclasspath

이번엔 packgae에 java.lang파일이 존재하지 않다고 한다.



[해결]
현재 bootclasspath의 2개의 파일이 있었는데 2개의 순서를 바꾸니깐 사라지긴 했다.
하지만 이상한 점이나 S같은데에서 cannot find symbol이라고 뜬다..
우선 이번 문제는 해결된듯하나 해결되지 않았다.

javac로 컴파일하기는 일단 일단락 하고
초심으로 돌아가서 javac로 hello world찍기를 시작한다.


ps. 혹시나 해서 테스트하는 파일 말고 다른 파일을 컴파일해보니깐 잘 되더라..
이런 ㅇㄹ ㄴ뮤ㅗ 낟몰 낟모 ㅣ 폰면ㅁ도로 ㅁ닐

파일이 잘못된건데 어느 부분에 버그가 있는지 찾았으니...하 내시간........................




----------------------------------------------------------------------------------------------------------------------------------------


[문제]


javac로 컴파일 한 후 java 로 class파일 실행시켜보기



[해결]

$ vim Foo.java


public class Foo {

    public static void main(String args[]) {

        System.out.println("테스트");

    }

}

$ javacFoo.java
$ java Foo

테스트





[문제]

javac에 bootclasspath를 추가시켜서 컴파일해보기




----------------------------------------------------------------------------------------------------------------------------------------



결론
javac -target 1.4 -source 1.4 -bootclasspath ~/work/hitachi/g4/build/Hitachi_BDJ_pf5_cdc/jvmbtclasses.zip:~/work/hitachi/g4/build/Hitachi_BDJ_pf5_cdc/classes.zip Receiver.java 

이런식으로 -target, -source이 2가지 옵션은 들어가고 source file은 당연히 들어가야한다.