【发布时间】:2011-01-24 22:25:37
【问题描述】:
在我的代码中,我有以下语句 import com.apple.dnssd.*; 并且编译器 (javac) 抱怨这一行。它写道,该包不存在。但我认为可能是“javac”在错误的位置(目录)搜索包。在这方面我有两个问题:
我如何知道 javac 在哪里搜索包?
我认为我很可能有上述包裹,但我不知道它在哪里。寻找包裹的典型地点是什么?
添加:
在另一台 Windows 机器上我尝试了同样的事情,“javac”没有抱怨(就像我之前编译时没有任何选项,如“-cp”)。我检查“类路径”环境变量的值。它等于“C:\Program Files\Java\jdk1.6.0_18\bin;.;..”。我去了第一个类路径目录,没有找到可能是“com.apple.dnssd”库的东西(没有 jar 文件,没有包含“apple”的文件)。所以,我不明白为什么 javac 不会在第二台 Windows 机器上抱怨。
添加 2:
在 #2 机器上,我在 JDK 之后安装了 Bonjour。在 Bonjour 之后,在 #1 机器上安装了 JDK。
添加 3:
在 #1 机器上(我无法导入包)我找到了 jar 文件(它位于“C:\Program Files\Bonjour”,它的名称是“dns_sd.jar”)。我尝试将上述目录添加到 Windows 7 上的 PATHCLASS 环境变量中(并且我重新启动了系统)。它没有帮助。我仍然无法导入包。我还尝试在命令行中指定“-classpath”。它也无济于事。现在我将尝试重新安装 Bonjour(按照建议)。
添加 4:
我已卸载 Bonjour 和 Bonjour SDK。我已经重新加载窗口。然后我安装了 Bonjour 和 Bonjour SDK。我已经重新加载了窗口。它没有解决问题。我仍然无法导入包(javac 写入该包不存在)。我还将 *.jar 文件复制到源所在的同一目录中。这是行不通的。我使用了“javac -cp .”。这是行不通的。现在我别无选择。我不知道我还能尝试什么。有人可以帮我吗?
添加 5 个:
我的类路径是:C:\Program Files\Java\jdk1.6.0_18\bin;.;..;"C:\Program Files\Bonjour"
我尝试从这个目录编译:C:\Users\myname\java\bonjour\example
我通过以下命令编译:javac ServiceAnnouncer.java
我收到以下错误消息:ServiceAnnouncer.java:1: com.apple.dnssd 包不存在
添加 6 个:
我终于成功地导入了库。我是通过以下方式做到的:
javac -cp "C:\Program Files\Bonjour\dns_sd.jar" ServiceAnnouncer.java
重要的是我在-cp后面指定了jar文件(不是jar文件所在的目录)。如果我用“*”替换“dns_sd.jar”,它也可以工作。所以,我的结论是,在“-cp”之后我需要指定jar文件(不是目录)。
【问题讨论】:
-
你应该在这个问题中添加标签“classpath”(我还没有权限)
-
您是否阅读了 duffymo 发布的链接?也许在 2 号机器上,Windows 的 Bonjour 是在 JDK 之后安装的。您正在寻找一个文件:dns_sd.jar
-
@timmyd,你是对的。在 2 号机器上,Bonjour 是在 JDK 之后安装的(在 1 号机器上,JDK 是在 Bonjour 之后安装的)。我阅读了 duffymo 的回答,但我仍然不明白该库在 2 号机器上的位置以及如何在 1 号机器上找到和使用库。
-
我阅读的说明说您应该再次安装 Bonjour(在安装 JDK 之后)。在 #1 机器上试试这个
-
你能准确地展示你的类路径是什么吗?以及您正在执行的命令(以及从哪个目录执行)。以及您收到的确切错误消息。
标签: java directory classpath packages