导入jar文件的内容不起作用

时间:2014-02-07 18:25:21

标签: java

对于这个非常简单而又简单的问题感到抱歉,但这让我整天都很生气:

我正在尝试创建一个简单的程序,帮助我将一些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 / metadata / Metadata中,这就是为什么我在第二行使用了所述导入语句的原因。

但是... 我收到以下错误:

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

我一直在寻找答案,但我似乎无法找到适合我的解决方案。任何人都可以指出我正确的方向我做错了吗?我在利用罐子方面没有多少经验。非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

我相信它是source.com.drew.metadata。原因包名称始终以小写字母开头。我也不认为包名是这样的。试试com.drew.metadata

答案 1 :(得分:0)

快速检查Javadoc for Metadata,您会在顶部看到Metadata在包com.drew.metadata

那就是说,你似乎有一个 source jar,而不是已编译的类:

  

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