2012-06-28 2 views
0

Linux OS에서 작업 중입니다.다른 디렉토리의 Java 클래스를 통해 현재 디렉토리의 파일을 읽는 방법

& 자바를 통해 XML 파일을 변환하는 중 문제가 발생했습니다. 자바 XMLTransform.class의

위치 :/홈/응용 프로그램/소스 (이 경로는 CLASSPATH에 존재) XML 파일 (작업 디렉토리)의 위치 : /home/apps/nk/working/payload.xml

내가, 내가 XMLTransform.class 그것에 XML 파일 이름 payload.xml 전달 호출하지만, 다음과 같은 오류가 발생하고있는 "작업 디렉토리"내부입니다

는 :

XML-22004: (Fatal Error) Error while parsing input XML document (Invalid InputSource.). 
--------- 
oracle.xml.parser.v2.XMLParseException: Invalid InputSource. 
    at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:320) 
    at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:248) 
    at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:202) 
    at oracle.xml.jaxp.JXTransformer.transform(JXTransformer.java:321) 
    at TransformationEngine.main(TransformationEngine.java:30) 

이 클래스는 파일 이름을 확인할 수없는 것이 분명하다 .

해결 방법에 대한 정보를 알려주십시오.

주 : invoice_transformer.xsl은 .class 파일과 동일한 디렉토리에 있으며 CLASS 파일은이를 읽을 수 있습니다.

자바 코드 :

import javax.xml.transform.*; 
import java.io.*; 

public class TransformationEngine { 
public static void main(String[] args){ 

    String payloadFileName = args[0]; 

    String xslFile = "invoice_transformer.xsl"; 

    InputStream is = java.lang.ClassLoader.getSystemResourceAsStream(xslFile); 
    InputStream pfis = java.lang.ClassLoader.getSystemResourceAsStream(payloadFileName); 

    try{ 
     TransformerFactory tFactory = TransformerFactory.newInstance(); 

     Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(is)); 
     transformer.transform(new javax.xml.transform.stream.StreamSource(pfis),new javax.xml.transform.stream.StreamResult(new FileOutputStream("IDMpayload.csv"))); 

    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

} 
+0

는'ClassLoader.getSystemResourceAsStream'를 사용해야합니까? [FileInputStream] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/FileInputStream.html)과 같이 잘 동작합니다. –

답변

0

getSystemResourceAsStream()는 CLASSPATH의 자원을 찾습니다. CLASSPATH에 /home/apps/nk/working/이 없습니다 (그렇습니까?).

대신 FileInputStream에 (@Banthar에 의해 제안)를 사용

관련 문제