【问题标题】:Error compiling java with imported classes from a jar使用从 jar 导入的类编译 java 时出错
【发布时间】:2015-10-03 11:08:03
【问题描述】:

我在 Linux 上编译我的 Java 源文件时遇到问题。我的源文件 (PetersTeam.java) 从存储在与源相同的文件位置的 jar 中导入类。我收到错误消息,指出包含这些类的包不存在。我已经尝试了许多不同的命令变体,我在网上找到了以下命令,但似乎没有一个有效。任何帮助将不胜感激。

javac -cp testjar.jar PetersTeam.java

这是我的导入,它们与 jar 中的包结构相匹配:

import org.gamelink.game.Cram;
import org.gamelink.game.Algo;

以下是错误:

PetersTeam.java:1: error: package org.gamelink.game does not exist
import org.gamelink.game.Cram;
                    ^
PetersTeam.java:2: error: package org.gamelink.game does not exist
import org.gamelink.game.Algo;
                    ^

更新: 使用 jar tvf testjar.jar 命令我只得到:

     0 Tue Jul 14 11:17:46 EDT 2015 META-INF/
    68 Tue Jul 14 11:17:46 EDT 2015 META-INF/MANIFEST.MF

所以我假设我在制作罐子时做错了这里是我使用的命令,它有什么问题吗?

jar -cvf testjar.jar *.class

【问题讨论】:

  • 请向我们展示您的jar 文件(jar tvf testjar.jar)的内容
  • @Jon Skeet 我用命令的结果更新了帖子

标签: java jar import classpath javac


【解决方案1】:

听起来问题出在您创建 jar 文件的方式上 - 假设您是在类层次结构的根目录下进行的(您应该这样做),您应该使用过:

jar -cvf testjar.jar org/gamelink/game/*.class

...因为在您运行jar 的目录中不应该有任何类。

【讨论】:

  • 如果我在 org/gamelink/connect 等其他包中有类,这会起作用吗?
  • @mysteryhobo:不——你基本上需要指定所有的类文件,或者使用 Ant 之类的东西来为你构建它。如果你在 Unix 上,你可以使用 find -name '*.class' 来查找类文件。
【解决方案2】:

我的申请中有这个问题。当我尝试编译 .java 文件时。答案 - 我的 .java 文件对我的项目中的其他类有很多依赖项,我必须 - 首先编译其他类,然后 - 开始编译我的目标文件(类)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2020-04-15
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多