자바 컴파일 중 package does not exist 에러. 해결했더니 java 실행시 에러...

세벌의 이미지

http://xmlgraphics.apache.org/fop/0.95/embedding.html#ExampleFO2PDF 보면서
ExampleFO2PDF.java 컴파일 해 보려고

javac ExampleFO2PDF.java

했더니 아래와 같은 에러가 나네요.

c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:39: package org.apache.fop.apps does not exist
import org.apache.fop.apps.FOUserAgent;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:40: package org.apache.fop.apps does not exist
import org.apache.fop.apps.Fop;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:41: package org.apache.fop.apps does not exist
import org.apache.fop.apps.FOPException;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:42: package org.apache.fop.apps does not exist
import org.apache.fop.apps.FopFactory;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:43: package org.apache.fop.apps does not exist
import org.apache.fop.apps.FormattingResults;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:44: package org.apache.fop.apps does not exist
import org.apache.fop.apps.MimeConstants;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:45: package org.apache.fop.apps does not exist
import org.apache.fop.apps.PageSequenceResults;
                          ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:53: cannot find symbol
symbol  : class FopFactory
location: class embedding.ExampleFO2PDF
    private FopFactory fopFactory = FopFactory.newInstance();
            ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:62: cannot find symbol
symbol  : class FOPException
location: class embedding.ExampleFO2PDF
    public void convertFO2PDF(File fo, File pdf) throws IOException, FOPException {
                                                                     ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:53: cannot find symbol
symbol  : variable FopFactory
location: class embedding.ExampleFO2PDF
    private FopFactory fopFactory = FopFactory.newInstance();
                                    ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:67: cannot find symbol
symbol  : class FOUserAgent
location: class embedding.ExampleFO2PDF
            FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
            ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:76: cannot find symbol
symbol  : class Fop
location: class embedding.ExampleFO2PDF
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
            ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:76: cannot find symbol
symbol  : variable MimeConstants
location: class embedding.ExampleFO2PDF
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
                                        ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:92: cannot find symbol
symbol  : class FormattingResults
location: class embedding.ExampleFO2PDF
            FormattingResults foResults = fop.getResults();
            ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:95: cannot find symbol
symbol  : class PageSequenceResults
location: class embedding.ExampleFO2PDF
                PageSequenceResults pageSequenceResults = (PageSequenceResults)it.next();
                ^
c:\fop\fop-0.95\examples\embedding\java\embedding\ExampleFO2PDF.java:95: cannot find symbol
symbol  : class PageSequenceResults
location: class embedding.ExampleFO2PDF
                PageSequenceResults pageSequenceResults = (PageSequenceResults)it.next();
                                                           ^
16 errors

cleol의 이미지

http://xmlgraphics.apache.org/fop/download.html

에서 파일을 다운 받으신 다음에 압축을 풀어서 jar 파일들을 찾으세요.
그리고 그 jar 파일들을 클래스패스로 주면 됩니다.
예를 들어 abc.jar 와 def.jar 가 있다면

javac -cp abc.jar:def.jar ExampleFO2PDF.java

와 같이 컴파일하면 됩니다.
(혹시 윈도에서 컴파일하신다면 : 를 ; 로 바꾸세요.)

세벌의 이미지

-cp fop.jar 붙여서

c:\fop\fop-0.95>"c:\Program Files\Java\jdk1.6.0_20\bin\javac.exe" -cp build\fop.jar examples\embedding\java\embeding\ExampleFO2PDF.java

했더니 에러메시지 안 나타나고
c:\fop\fop-0.95\examples\embedding\java\embedding ExamplesFO2PDF.class
만들어 졌습니다. 그런데...

c:\fop\fop-0.95\examples\embedding\java\embedding> java ExamplesFO2PDF

했더니 아래의 에러가 나네요.

java.lang.NoClassDefFoundError: ExampleFO2PDF/class
Caused by: java.lang.ClassNotFoundException: ExampleFO2PDF.class
	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)
Could not find the main class: ExampleFO2PDF.class.  Program will exit.
Exception in thread "main" 

http://sebul.sarang.net/

cleol의 이미지

java 에도 javac 와 똑같이 클래스패스 옵션을 주어야 합니다.
자바는 항상 동적 라이브러리를 사용하기 때문에 컴파일 타임 의존성과 런타임 의존성이 거의 같습니다.

세벌의 이미지

java -cp 붙여도 같은 에러 나네요. examples\embedding\README 보니까

This directory contains several examples on using FOP in Java.
 
To compile the examples you can call "ant" from the directory where
build.xml is found. (Apache Ant must be installed!)
You can also directly run the individual examples with these scripts.
Just call
 
ant -projecthelp
 
for a listing of all available examples.

이런 말이 있네요. 일단 ant 설치해서 다시 해봐야겠네요.

http://sebul.sarang.net/

cleol의 이미지

ant 와는 관계 없습니다. ant 는 build tool 일 뿐입니다.

java -cp build\fop.jar;examples\embedding\java ExamplesFO2PDF

로 해보세요.

-----------------------** 추가 **

아래에 dormael 님 말씀을 보고 소스 코드를 확인해보니 패키지가 embedding 이네요.
그리고 에러 메시지의 패스를 보고 추측컨데

java -cp build\fop.jar;examples\embedding\java embedding.ExamplesFO2PDF

로 실행하셔야 할 것 같습니다.

dormael의 이미지

실행하실때 패키지를 다 지정하셔야 하지 않을까요?
소스 루트가 어디인지는 정확히 모르지만 아마도

embeding.ExampleFO2PDF 아니면 examples.embedding.java.embeding.ExampleFO2PDF

가 아닐까 싶습니다.

물론 클래스패스도 지정해 주셔야 하구요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

세벌의 이미지

http://ant.apache.org/manual/install.html 참고하여 ant 설치하고 환경변수 설정하고
examples\embedding\README 참고해서
examples\embedding 디렉토리에서

ant -projecthelp
해 보고,
ant complie
하니 컴파일 되고 build\classes 아래 어딘가에 .class 파일 만들어 주고,
ant example1
하니 ExampleFO2PDF를 이용하여 embedding\out 디렉토리에 pdf 파일을 만들어 주네요.

위의 분 말씀대로 한 건 아니지만, 어쨌든 위의 분 도움말 고맙습니다.

http://sebul.sarang.net/

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.