【问题标题】:Java jars unable to resolve classJava jars 无法解析类
【发布时间】:2013-11-06 14:13:17
【问题描述】:

我对 Java 开发比较陌生...我以为我了解类路径的工作原理,但我一定遗漏了一些东西。

使用 Groovy,我有 2 个由导入引用的外部类。当我执行脚本时,我得到“无法解决类”错误。我将这些 jar 放在与脚本相同的目录中。如果我解开它们,脚本可以工作,但 jar'd up 脚本不会。

我在这里错过了什么?

示例

import org.apache.log4j.Logger

Logger log = Logger.getLogger("ldap_delete")
log.info("This is an informative log entry")

将 log4j-1.2.17.jar 放在与 .groovy 脚本相同的目录中不起作用。将 cp 设置为 .不起作用。我必须这样做:

groovy -cp log4j-1.2.17.jar myscript.groovy

让类加载。

【问题讨论】:

  • 你是如何运行脚本的?
  • 从命令行 - 我在上面更新了示例
  • 是的。您必须将 jar 放在类路径中。你就是这样做的

标签: java groovy


【解决方案1】:

需要查看特定问题的脚本,但一般来说,如果它依赖于其他 jar,则在运行 java 程序时需要设置类路径。这是一个例子:

java -cp /path/to/something.jar;/another/path/else.jar my.package.Program

【讨论】:

  • 好的,是的,但我也认为脚本会(默认情况下)在它所在的目录中查找。如果你解压缩库,它会显示它,但没有看到 .jar 本身。
  • 在设置 cp 时是否必须明确使用实际的 jar 文件?我以为你可以只设置一个目录......但这似乎也不起作用。
  • @Bean 是的。您需要包含 jar 文件的路径和名称及其扩展名,如“对于包含 .class 文件的 .jar 或 .zip 文件,类路径以 .zip 或 .jar 文件的名称结尾”。在这个doc page.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 2017-12-05
  • 2020-07-21
  • 1970-01-01
  • 2011-11-20
相关资源
最近更新 更多