2014-02-07 69 views
0

對不起,我很nooby和簡單的問題jar文件的內容,但是這已經整天把我逼瘋:導入工作不

我想創建一個簡單的程序,這將幫助我一些JPG文件到文件夾進行排序。我想使用元數據提取器來提取拍攝照片的日期(https://code.google.com/p/metadata-extractor/)。

我的問題是每當我嘗試編譯時,它說包不存在。我將jar文件與我的測試java文件放在同一個目錄中,以及我正在測試的圖片。

我成立了Git的Bash的類路徑如下:

javac -cp "metadata-extractor-2.6.4.jar:." PictureSort.java 
與(幾個簡單)的代碼行沿

import java.io.File; 
import com.drew.metadata.Metadata; 

class PictureSort 
{ 
    public static void main(String[] args) 
    { 
     File file = new File("IMG_1244.JPG"); 
     Metadata metadata = ImageMetadataReader.readMetadata(file); 
    } 
} 

我已經研究過的Jar文件的內容爲我需要和Metadata.java包含在com/drew /元數據/元數據,所以這就是爲什麼我在第二行使用所述的導入聲明。

但是...... 我收到以下錯誤:

PictureSort.java:2: error: package com.drew.metadata does not exist 
PictureSort.java:9: error: cannot find symbol 
    Metadata metadata = ImageMetadataReader.readMetadata(file); 
      ^
symbol: class Metadata 
location: class PictureSort 
PictureSort.java:9: error: cannot find symbol 
    Metadata metadata = ImageMetadataReader.readMetadata(file); 
           ^
symbol: variable ImageMetadataReader 
location: class PictureSort 
3 errors 

我試圖尋找一個答案,但我似乎無法找到一個解決方案,爲我工作。任何人都可以指出我正確的方向,因爲我做錯了什麼?我在使用罐子方面沒有太多經驗。幫助真的很感激。

+0

導入應該可能是'import com.drew.metadata.Metadata'。以_-src.jar_結尾的jar名稱表明這不是包含類文件的二進制文件;只是一個源代碼檔案。您將需要獲取二進制庫。 – McDowell

+0

感謝您的快速回復,我已經下載了二進制庫。它只有com/drew/*,所以我在代碼和類路徑中改變了它,所以它不再是源代碼。但問題仍然存在,與package「com.drew」的錯誤相同。元數據「不存在嗎? – Zhave

回答

0

我相信這是source.com.drew.metadata。原因程序包名稱始終以小寫字母開頭。我也不認爲包名是這樣的。嘗試com.drew.metadata

0

Javadoc for Metadata快速檢查,你會在頂部是Metadata在包裝看到com.drew.metadata

這就是說,你似乎有一個罐子,而不是編譯的類:

javac -cp「metadata-extractor-2.6.4-src.jar :.」 PictureSort.java

您需要下載包含已編譯類的.jar。看來你可以從這裏做到這一點:https://code.google.com/p/metadata-extractor/downloads/detail?name=metadata-extractor-2.6.4.zip

下載.zip,解壓,得到.jar

一旦你這樣做,你的進口將是:

import com.drew.metadata.Metadata; 

你」將通過編譯:

javac -cp "metadata-extractor-2.6.4.jar:." PictureSort.java 
+0

我完全按照這些步驟來解決問題仍然存在。這裏很困惑。 – Zhave