Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导入jar文件的内容不起作用_Java - Fatal编程技术网

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

Java 导入jar文件的内容不起作用,java,Java,很抱歉提出了一个非常简单的问题,但这一整天都让我发疯: 我试图创建一个简单的程序,将帮助我排序到文件夹中的一些jpg文件。我想使用元数据提取器提取照片拍摄的日期() 我的问题是,每当我尝试编译时,它都会说包不存在。我的jar文件与我的测试java文件位于同一目录中,还有我要测试的图片 我在Git Bash中设置了类路径,如下所示: javac -cp "metadata-extractor-2.6.4.jar:." PictureSort.java 除了(几个简单的)代码行: import j

很抱歉提出了一个非常简单的问题,但这一整天都让我发疯:

我试图创建一个简单的程序,将帮助我排序到文件夹中的一些jpg文件。我想使用元数据提取器提取照片拍摄的日期()

我的问题是,每当我尝试编译时,它都会说包不存在。我的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

我试图寻找答案,但似乎找不到适合我的解决方案。有人能为我指出我做错了什么的正确方向吗?我在使用罐子方面没有太多经验。非常感谢你的帮助

我相信是
source.com.drew.metadata
。原因包名称始终以小写字母开头。我也不认为包名是这样的。尝试快速检查一下,您将在顶部看到
com.drew.metadata
位于包
com.drew.metadata

也就是说,您似乎有一个源jar,而不是编译的类:

javac-cp“metadata-extractor-2.6.4-src.jar:”PictureSort.java

您需要下载包含已编译类的
.jar
。您似乎可以在此处执行此操作:

下载
.zip
,解压缩它,获得
.jar

完成后,您的导入将是:

import com.drew.metadata.Metadata;
您将通过以下方式进行编译:

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

导入可能是
import com.draw.metadata.metadata
。以-src.jar结尾的jar名称表明这不是包含类文件的二进制文件;仅仅是一个源代码存档。您需要获得二进制库。谢谢您的快速回复,我已经下载了二进制库。它只有com/drew/*所以我在代码和类路径中更改了它,这样它就不再是源代码了。但是问题仍然存在,包“com.drew.metadata”不存在相同的错误?我已经按照这些步骤完全解决了问题。。这里很混乱。