【问题标题】:Error: Could not find or load main class Main - when running from Linux command line错误:无法找到或加载主类 Main - 从 Linux 命令行运行时
【发布时间】:2014-12-03 16:36:46
【问题描述】:

最初,我可以像这样从命令行运行我的代码:

java -cp "/var/www/html/tcqa/bin/test_and_control-1.0-SNAPSHOT.jar:/var/www/html/tcqa/bin/postgresql-9.3-1100-jdbc41.jar" Main /var/www/html/tcqa/sql/tc.sql

我需要添加一些新功能并决定拆分主类和用例来管理将运行哪个 sql 语句。我将我的主类移出,并且无法让我的代码从命令行运行。我的新命令行如下所示:

java -cp ["/home2/smontoya/test_and_control-1.0-SNAPSHOT.jar:/var/www/html/tcqa/bin/postgresql-9.3-1100-jdbc41.jar;"] Main email /var/www/html/tcqa/sql/email.sql

显然,我想在将其移入生产模式之前对其进行测试。 我的代码结构如下:

main
|-->java
    |--> email
    |    |__ EmailFlag
    |    |__ EmailRow
    |--> tc
    |    |__  Analytics
    |    |__ Row
    |    |__  TestAndControl
    |    |__  Utils
    |--> Main

【问题讨论】:

  • 发布您遇到的错误
  • 我找到了解决方案。问题是这两个 jar 文件不在同一个位置。一个位于我的 bin 目录中,另一个位于另一个完全不同的位置(目录结构)。在两个 jar 文件位于同一目录后,主要错误消失了...

标签: java linux command-line


【解决方案1】:

请检查 jar 中的清单文件。它描述了版本和 mainClass。 如果您使用的是 maven .. 在添加依赖项以构建 jar 时,请在配置中描述主类,以便 maven 将此配置添加到清单文件中

【讨论】:

  • 正如stackdev所提到的,你可以给主类namw和包作为类路径
  • 问题原来是两个文件不在同一个目录位置。在我将这两个文件放在同一目录位置后,一切正常。
【解决方案2】:

尝试指定 Main 的完全限定名称:

java -cp /path1:/path2 com.company.Main arg1 arg2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-06
    • 2014-07-04
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    相关资源
    最近更新 更多