对于这个非常简单而又简单的问题感到抱歉,但这让我整天都很生气:
我正在尝试创建一个简单的程序,帮助我将一些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
我一直在寻找答案,但我似乎无法找到适合我的解决方案。任何人都可以指出我正确的方向我做错了吗?我在利用罐子方面没有多少经验。非常感谢帮助。
答案 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