'javac'에 해당되는 글 3

  1. 2012.03.15 [Vim] JAVA 컴파일하기 - javac 이용
  2. 2010.08.19 FindBugs에서 버그가 발견된 소스의 라인을 찾지 못하는 경우
  3. 2009.11.13 java, javac 명령어

[Vim] JAVA 컴파일하기 - javac 이용

let $PATH = $PATH . ";C:/Program\ Files/Java/jdk1.6.0_26/bin/" "또는 javac.exe가 PATH에 잡혀 있어야 한다.
set makeprg=javac\ %
set errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%#

:make 를 하면 에러가 난 곳으로 이동한다.
:cn 은 다음 에러가 난 곳으로 이동한다.
:cp 는 이전 에러가 난 곳으로 이동한다.
:cw 는 에러 목록을 보여주고 에러가 난 곳으로 이동할 수 있다.
:cl 는 에러 목록을 보여준다.


- 실행
:!java %:r

- 참고
Linux등에서 Vim 으로 Java 프로그램 짜기
:help filename-modifiers

이렇게도 가능하지만 ...
:!"C:\Program Files\Java\jdk1.6.0_20\bin\javac" %

FindBugs에서 버그가 발견된 소스의 라인을 찾지 못하는 경우


컴파일시 디버깅 정보가 들어가지 않아서 그렇다.
Ant를 사용한다면 컴파일시 debug를 yes로 둔다.

<javac destdir="${classes.dir}" srcdir="${source.dir}"
    classpathref="master.classpath" includeantruntime="false"
    debug="yes"
/>

- 이거 해결하려고 클래스 파일을 비교해 봤다.

java, javac 명령어

src> "C:\Program Files\Java\jdk1.6.0_12\bin\javac" com/test/sample/Test.java
src> java com.test.sample.Test
Hi
src> "C:\Program Files\Java\jdk1.6.0_12\bin\javac" com/test/sample/Test.java
com\test\sample\Test.java:5: package org.apache.log4j does not exist
                org.apache.log4j.Logger logger;
                                ^
1 error

src> "C:\Program Files\Java\jdk1.6.0_12\bin\javac" -cp D:\lib\log4j-1.2.13.jar  com/test/sample/Test.java
src> java com.test.sample.Test
Hi
src> "C:\Program Files\Java\jdk1.6.0_12\bin\javac" -cp D:\lib\log4j-1.2.13.jar  com/test/sample/Test.java
src> java com.test.sample.Test
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
        at com.test.sample.Test.main(Test.java:5)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        ... 1 more

src>java -cp D:\lib\log4j-1.2.13.jar  com.test.sample.Test
Exception in thread "main" java.lang.NoClassDefFoundError: com/test/sample/Test
Caused by: java.lang.ClassNotFoundException: com.test.sample.Test
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: com.test.sample.Test.  Program will exit.

src> java -cp D:\lib\log4j-1.2.13.jar;.  com.test.sample.Test
Hi