ant javac task를 이용하여 compile 시 class 파일 사이즈가 다른 문제

726 views
Skip to first unread message

namkyu Lee

unread,
Mar 26, 2012, 10:57:04 AM3/26/12
to ks...@googlegroups.com
ant의 javac로 컴파일하여 생성된 class파일과 로컬  이클립스에서 컴파일 된 class 파일이 서로 사이즈가 다른 현상이 있어 질문 올립니다. 
모든 class파일의 사이즈가 다른 것이 아닌 특정 클래스 몇 개들이 사이즈가 다르네요.

이상한 점은 다른 사이즈를 가진 class 파일을 decompile 했을 때 안의 코드는 동일하며 그렇다고 jvm버전이 다른 것도 아닙니다.
okjsp에 문의 해봤더니 debug 옵션을 주면 그럴 수도 있다고는 하셨는데 debug 옵션 및 기타 다른 옵션들을 모두 삭제하고 테스트를 해봐도 동일한 현상이 발생하네요.

혹시 이런 현상에 대해서 경험해 보신 분 계시면 답변 좀 부탁드리겠습니다.

ant javac 설정 내용
<target name="build">
<echo message="|-------------------------------------------------------------| " />
<echo message="| BUILD START | " />
<echo message="|-------------------------------------------------------------| " />
<copy todir="${app_home_dir}" overwrite="true">
<fileset dir="${project_home}/WebContent">
<include name="**/*.jsp" />
<include name="**/*.xml" />
<include name="**/*.jar" />
</fileset>
</copy>

<copy todir="${app_home_dir}/WEB-INF/classes" overwrite="true">
<fileset dir="${project_home}/conf">
<exclude name="**/.svn" />
</fileset>
</copy>

<javac
target="${java.target}"
debug="on"
nowarn="true"
deprecation="off"
listfiles="true"
failonerror="true"
srcdir="${project_home}/src"
destdir="${app_home_dir}/WEB-INF/classes"
encoding="${java.compile.encoding}"
includeantruntime="false">

<include name="**/*.java" />
<classpath>
<path refid="common_classpath" />
<fileset dir="${app_classpath}/WebContent/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>

Sungchul Park

unread,
Mar 26, 2012, 7:48:41 PM3/26/12
to ks...@googlegroups.com
eclipse는 ecj라는 증분(incremental) 자바 컴파일러를 따로 가지고 있습니
다. 변경된 소스와 이에 관련된 소스만 추적해서 컴파일하는 컴파일러인데
javac와 동일한 결과가 나오지 않을 수도 있어요. 최적화 알고리즘이 다를테
니까요.

>
> ant의 javac로 컴파일하여 생성된 class파일과 로컬 이클립스에서 컴파일
> 된 class 파일이 서로 사이즈가 다른 현상이 있어 질문 올립니다.
> 모든 class파일의 사이즈가 다른 것이 아닌 특정 클래스 몇 개들이 사이즈
> 가 다르네요.
>
> 이상한 점은 다른 사이즈를 가진 class 파일을 decompile 했을 때 안의 코
> 드는 동일하며 그렇다고 jvm버전이 다른 것도 아닙니다.
> okjsp에 문의 해봤더니 debug 옵션을 주면 그럴 수도 있다고는 하셨는데
> debug 옵션 및 기타 다른 옵션들을 모두 삭제하고 테스트를 해봐도 동일한
> 현상이 발생하네요.
>
> 혹시 이런 현상에 대해서 경험해 보신 분 계시면 답변 좀 부탁드리겠습니다.
>

> *ant javac 설정 내용*

> --
> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이
> 전송되었습니다.
> 웹에서 이 토론을 보려면
> https://groups.google.com/d/msg/ksug/-/M-SRSquuwLgJ을(를) 방문하세요.
> 이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
> 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내
> 주세요.
> 더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그
> 룹을 방문하세요.


namkyu Lee

unread,
Mar 27, 2012, 12:08:13 PM3/27/12
to ks...@googlegroups.com
아. 새로운 사실을 알게 되었네요. ^^ 답변 감사합니다.

2012년 3월 27일 오전 8:48, Sungchul Park <gyu...@gmail.com>님의 말:
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내

주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그
룹을 방문하세요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.

Sanghyuk Jung

unread,
Mar 27, 2012, 8:02:09 PM3/27/12
to ks...@googlegroups.com
저도 옛날에, 개발자 한명이 Eclipse에서 컴파일해서 서버로 배포하던 시절에, Eclipse의 컴파일 결과와 javac로 한게 달라서 신기해했던 경험이 있습니다..

정확히 어떤 문제였는지는 가물가물한데, 찾아보니 serialVersionUID 관련해서도 문제가 생길수 있다고 하네요.

그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
Reply all
Reply to author
Forward
0 new messages