gcj, 외부 패키지를 사용하도록 하는 방법에 대해

netisinfinite의 이미지

gcj를 이용해 윈도쪽 프로그램을 만들고 있습니다.
현재 다른 부분은 문제가 없는데, jaxp를 이용하는 프로그램을 작성하면 문제가 생기네요.

# Zeta.exe
Exception in thread "main" java.lang.NoClassDefFoundError: gnu.xml.dom.DomDocume
ntBuilderFactory
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Zeta.exe)
at java.lang.Class.initializeClass(Zeta.exe)
at zetablitz.zeta.ZetaInterpreter.interpretFromXML(Zeta.exe)
at zetablitz.zeta.Zeta.openScript(Zeta.exe)

gnu jaxp 패키지들을 직접 사용하지는 않았지만, gcj의 소스를 보니 javax.xml.* 패키지들 내에
gnu.xml.* 패키지를 사용하도록 하드코딩이 되어 있었습니다. (참고로 javax.xml 패키지를
사용하는 라이브러리 역시 제가 작성한 게 아니라 써드파티라, 소스를 수정하자면 일이
커집니다.)

그래서 classpath 소스에서 직접 DomDocumentBuilderFactory를 컴파일해다 링크하려고 했는데,
이번에는 이미 존재하는 클래스라고 에러 메시지가 뜹니다.

# gcj --main=zetablitz.zeta.Zeta lib\*.o DomDocumentBuilderFactory.o -s -o Zeta
/home/trudemar/Desktop/compile-win-win/gcc-build/i686-pc-mingw32/libjava/gnu/xml
/dom/DomDocumentBuilderFactory.java:69: multiple definition of `gnu::xml::dom::D
omDocumentBuilderFactory::DomDocumentBuilderFactory()'

처음엔 제가 사용하는 mingw/gcj 패키지의 문제인가 싶었는데, 검색해 보니 저와 완전히 같은 문제를
겪는 사람이 gcj 메일링에 글을 올렸었더군요. 하지만 답변이 없었습니다.

지금 가장 쉬운 해결책은 gcj에서 직접 컴파일한 classpath 패키지들을 이용하도록 하는 것이라는
생각이 드는데, 제대로 해결하고 있는 건지 잘 모르겠습니다. 일단 gcj의 옵션중에
기존 패키지 네임스페이스를 덮어 쓸 방법이 있는지 궁금합니다. 사용하는 gcj 버전은 4.2.0 입니다.

답변 부탁드립니다.

netisinfinite의 이미지

해결했습니다. -Wl,--allow-multiple-definition 옵션이 있네요.
DomDocumentBuilderFactory 하나 덮어씌워주니 잘 실행 됩니다. 하하핫...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.