2013-05-12 7 views
11

मैं pdfbox उपयोग करने के लिए एक सरल पीडीएफ फाइल लिखने के लिए कोशिश कर रहा हूँ मौजूद नहीं है लेकिन समस्या यह है कि मैं त्रुटि हो रही है है:जावा आयातित पैकेज

cannot find symbol class PDDocument 

मैं एक ही फ़ोल्डर कार्यक्रम में जार फ़ाइलें डाउनलोड कर ली मौजूद। इस संकलन त्रुटि को कैसे ठीक करें?

package org.apache.pdfbox.pdmodel.PDDocument; 

import java.io.*; 
import org.apache.pdfbox.pdmodel.PDDocument; 

public class pdf 
{ 
public static void main(String args[]) 
{ 
} 
} 
+0

का उपयोग कर काम javac से इस संकलन त्रुटि पर चलने है एक कमांड लाइन, या आपके आईडीई से? जार को एक ही निर्देशिका में रखने के लिए पर्याप्त नहीं है - आपको इसे उस टूल के क्लासपाथ में जोड़ना होगा जिसका आप उपयोग कर रहे हैं। –

+2

'पैकेज org.apache.pdfbox.pdmodel.PDDocument; 'आपका पैकेज मौजूदा वर्ग का पूर्णतः योग्य नाम नहीं होना चाहिए! –

+0

धन्यवाद एंड्रयू। मैं इसे अभी हटा दूंगा। – user1952529

उत्तर

2

आपको यह सुनिश्चित करना होगा कि जेएआर फ़ाइल क्लासपाथ पर है।

+0

उत्तर के लिए धन्यवाद। यह सुनिश्चित करने के लिए, मैं अच्छा उदाहरण उपयोग करता हूं, मैं अपाचे की वेबसाइट से CreateBlankPDF.java का उपयोग करता हूं। संकलन करने के लिए, मैंने यह किया, javac -cp pdfbox-1.8.1.jar CreateBlankPDF.java और प्रोग्राम चलाने के लिए, मैंने यह किया: जावा-क्लासपाथ पीडीएफबॉक्स-1.8.1।जार CreateBlankPDF धागे "मुख्य" java.lang में अपवाद ..NoClassDefFoundError: CreateBlankPDF कारण: java.lang.ClassNotFoundException: CreateBlankPDF – user1952529

7

उसी फ़ोल्डर या पैकेज में जार डालने से इसे कक्षा पथ में नहीं जोड़ा जाता है। अपने जावा प्रोग्राम को चलाने के दौरान आपको अपने क्लास पथ में जार के पथ का जिक्र करना होगा।

संकलन करने के लिए::

javac -classpath .;yourjar.jar src/your/package/*.java 

java -classpath .;yourjar.jar src/your/package/yourprogrammeclassname 
+0

यह संकलन त्रुटि को ठीक नहीं करेगा। –

+0

संकलन के लिए आप क्लासस्पैट पर्यावरण चर सेट कर सकते हैं। –

+2

आपके कोड का उपयोग करने वाले किसी भी वर्ग का उपयोग करने के लिए आपने खुद को लिखने की आवश्यकता नहीं है, ताकि संकलक को इंगित किया जा सके ताकि यह उन्हें आपके कोड में लिंक कर सके जब यह सबकुछ एक साथ संकलित हो। उन वर्गों के लिए फाइल सिस्टम पथ को क्लासपाथ कहा जाता है। बाहरी कंपाउंडर्स को देखने के लिए अपने कंपाइलर को बताने के दो तरीके हैं। जब आप संकलक को कॉल करते हैं तो उसे "-क्लासपाथ" ध्वज पास करना होता है और कक्षाओं के पथों की अर्धविराम-सीमित सूची के साथ इसका पालन करना होता है। –

2

को चलाने के लिए एक समान मुद्दा मैंने पाया कि मैं में आयात लाइन पर सही सिंटैक्स नहीं था होने यहाँ उस के लिए वाक्य रचना है जावा स्रोत

(खिड़कियों पर) निम्नलिखित के रूप में एक संकलन कर रही:

javac -cp .;commons-io-2.4.jar AgeFileFilterTest.java 

AgeFileFilterTest.java

को उसी फ़ोल्डर

में कॉमन्स-कब-2.4.jar साथ मैं त्रुटि हो रही थी:

import org.apache.*; 
^ 
AgeFileFilterTest.java:24: error: cannot find symbol 
      displayFiles(directory, new AgeFileFilter(cutoffDate)); 
             ^

क्योंकि यह लग रहा था सब जगह में था यह puzzling किया गया था; जार फ़ोल्डर, classpath में परिभाषित में था, और जार सामग्री निरीक्षण पर मैं देख सकता क्या 7zip मैं जार फ़ाइल खोली का उपयोग कर referenced- किया जा रहा था और देख सकते हैं:

commons-io-2.4.jar\org\apache\commons\io\filefilter\AbstractFileFilter.class 

मैं तो कुछ पोस्ट में पढ़ा जो मुझे आयात सिंटैक्स के बारे में सोचने के लिए मिल गया है "आप वर्ग आयात नहीं करते" ...

मैं से इसे बदल:

+०१२३५१६४१०:

import org.apache.*; 

में बदलने

import org.apache.commons.io.filefilter.*; 
का उपयोग कर

और वाला संकलन त्रुटि चला:। javac -cp; कॉमन्स-कब-2.4.jar AgeFileFilterTest.java

और कार्यक्रम

java -cp .;commons-io-2.4.jar AgeFileFilterTest 
संबंधित मुद्दे