【问题标题】:Java using classes from jarJava 使用 jar 中的类
【发布时间】:2012-05-01 21:08:36
【问题描述】:

这一定是一个被问得太多的问题。虽然这里有:

我有一个用于测试 (hworld.java) 的 java 文件,并且正在尝试导入 conio.jar,它是一个 JAR,它是 Conio 的包装器。 JAR 只包含一个类文件 (conio.class) 和 META-INF。尝试执行 import conio.*import conio.conio 向我展示了这一点:

C:\Documents and Settings\Nick\Desktop>javac -cp *.jar; hworld.java
hworld.java:3: error: package conio does not exist
import conio.*;
^
1 error

javac -cp conio.jar hworld.java 一样编译它在编译时仍然会出错。我什至提取了 jar 并将 conio.class 放在与 hworld.java 相同的目录中,但无济于事。 JAR 也与 hworld.java 位于同一目录中。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 如果 Conio 类真的不在包中,试试 import Conio;
  • @rooftop hworld.java:3: 错误:'。'预期进口 conio;
  • @SuperDisk 如果它没有包(AKA 默认包),那么你根本不需要导入它...完全删除导入行。
  • @yair 这没有任何意义,我如何告诉编译器使用 conio.jar 而不导入它?
  • @SuperDisk 我指的是hworld.java 中的import 行。但是,jar 应该在类路径中。您可以通过javac 命令的-cp 选项来执行此操作。

标签: java jar classpath conio


【解决方案1】:

你没有提到 conio.class 是否在包 conio 中定义。如果不是,那么只需使用该类而不导入它。删除导入。

【讨论】:

  • ..这对于 java 来说似乎是一件非常愚蠢的事情!但它确实有效。虽然,对于查看现有代码库的新编码员来说,除非他/她查看 makefile 或其他东西,否则他们永远不会知道所有函数的定义位置。多么愚蠢。
【解决方案2】:

这实际上是不可能的。如果要导入,则需要将其他类放入包中。

What's the syntax to import a class in a default package in Java?

【讨论】:

  • 我也这样做了。 javac -cp conio.jar; hworld.java 似乎什么也没做。
  • 啊,对不起,我错过了。尝试导入 Conio;
【解决方案3】:

找出 Conio 所在的包 - 一种简单的方法是将 jar 作为 zip 文件打开,该包将与存档的文件夹结构相对应。例如,如果 Conio 在 x/y/z 中,则导入 x.y.z.Conio 并在同学身上使用 conio.jar 编译/运行。

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多