【发布时间】:2010-10-12 12:19:46
【问题描述】:
我是 C++ 开发人员 - 不是 Java 开发人员,但必须让这段代码工作......
我有 2 个公共课程将被另一个产品使用。我在每个 java 文件中都使用了 package 指令。
package com.company.thing;
class MyClass ...
当我尝试编译使用我添加的测试应用程序时
import com.company.thing.*;
javac 编译器失败,出现关于 com.company 的错误不存在。 (即使我将它编译在与我刚刚打包的类文件相同的目录中)
我确信我在做一些愚蠢而愚蠢的事情。
我已经阅读了http://java.sun.com/docs/books/tutorial/java/package/usepkgs.html 页面并尝试设置一个目录结构,如 /com/company/thing 等,但要么我完全搞砸了,要么遗漏了其他东西。
编辑 感谢您的建议-我以前尝试过类路径。它没有帮助。
我尝试编译
javac -classpath <parent> client.java
结果是:
package com.company does not exist
我在 \com\company\product 中有要导入的代码(两个 java 文件)。我编译的很好。 (它们包含 MyClass)我什至为它们制作了一个 jar 文件。我将jar文件复制到父目录。
然后我做了(在带有客户端 java 文件的父目录中)
javac -cp <jarfile> *.java
结果是:
cannot access MyClass
bad class file: MyClass.class(:MyClass.class)
class file contains wrong class: com.company.product.MyClass
Please remove or make sure it appears in the correct subdirectory of the classpath.
编辑
如果我使用 MyClass 的完全限定名称并在父目录中编译它,我可以编译和运行客户端代码。我现在完全糊涂了。
在没有设置类路径的情况下编译 - 只是
javac *.java
在父目录中 - 它工作正常。
我可以编译一个测试应用程序,但是当我必须将它集成到生产代码中时,这不会减少它。仍在寻求帮助。
编辑:
最后 - 不知道为什么它以前不起作用 - 但我清理了整个目录结构中的所有文件,现在它可以工作了。
谢谢
【问题讨论】:
-
向我们展示您的文件(.java,更重要的是 .class)的确切布局以及您将类路径设置为的内容。然后向我们展示来自编译器的确切错误消息。否则,我们只能将您引导至通用资源/教程。
-
我已经给出了确切的错误信息。不幸的是,我无法发布我公司的代码。我提供的通用信息是完整的,只是用我的公司名称替换了“公司”
-
我猜这是一个类路径问题 - 但没有任何建议可以解决问题。
-
在
javac -classpath <parent> client.java中的<parent>应该是指com上面的目录。如果你在com,那就是../。