如何让javac找到JAR文件?(日食可以看到它们)

2022-09-02 03:23:49

当我在Eclipse中时,我的项目编译时没有错误,但是当我尝试使用它编译时,它说我丢失了一些包......javac

我复制了我的编译命令和下面的一些错误文本:

javac -classpath lib/ -d bin/ src/*.java
src/Cleaner.java:5: package net.sourceforge.jgeocoder does not exist
src/MyUtilities.java:19: package org.apache.commons.codec.binary does not exist

在 Eclipse 中,我添加了所有 .JAR 文件到构建路径,程序编译得很好。

为什么当我使用javac而不是Eclipse IDE时找不到jars?


答案 1

-classpath lib/将导致 在 中查找类文件的树。如果你在那里有JAR存档,你必须使用 - 并且可能使用你的CLI在*上的任何转义机制,以确保它到达而不是被CLI扩展javaclib-classpath lib/*.jarjavac

请参阅 javac 命令参考 (窗口)。<


答案 2

现有的答案,尽管它是信息丰富的,但仍然让我想知道,不得不回顾javac -classpath文档。以下是您可能想知道的内容的修订版:

javac -cp "lib/" Example.java将加载 中的所有文件。
将加载 中的所有文件,但不加载文件。
将加载 中的所有 和 文件。.classlib/javac -cp "lib/\*" Example.java.jarlib/.classjavac -cp "lib/;lib/\*" Example.java.jar.classlib/

笔记:

  • 上述示例中使用的(通配符)字符已转义(请注意前面的 )。 是针对bash的,如果你使用的是其他东西,它可能会有所不同。你想转义它,因为java sdk实用程序,比如,他们自己解释通配符的方式。据我所知(如果我错了,请纠正我),Windows命令行不会扩展,所以你不需要转义它:应该没问题。*\*\javac*-cp lib\*
  • ;分隔路径,如 - 这将加载以下目录中的文件:当前目录,a,b和c。javac -cp ".;a/;b/;c/" Example.java.class
  • 使用分隔符 () 时,用引号将类路径括起来(如示例中所示)。;

推荐