【问题标题】:Strange Class Not Found Error Java?未找到奇怪的类错误Java?
【发布时间】:2015-09-02 17:43:36
【问题描述】:

嘿,我正在尝试构建和部署一个 Java 应用程序。

我的 buildAndDeploy.sh 文件如下:

#!/bin/bash
# CoreSystemsAccumulator build and deploy script

echo "Building and Deploying CoreSystemsAccumulator"

# Step 1 - do a git pull.
cd ..
git pull

# Step 2 - Set CLASSPATH.
export CLASSPATH=libs/*

# Step 3 - Compile all sources using javac.
find ./src -name *.java > sources_list.txt
javac -d bin -classpath "${CLASSPATH}" @sources_list.txt
rm -rf sources_list.txt

# Step 4 - Run the app.
cd /opt/repositories/CoreSystemsAccumulator/bin
java com.ra.mainn.StartAccumulator

它编译得很好,但是当它尝试运行应用程序时,我收到以下错误:

Error: Could not find or load main class com.ra.mainn.StartAccumulator

现在真正奇怪的是,当我尝试在没有脚本的情况下运行应用程序时,只需进入 bin 目录并运行以下命令,它就可以正常运行。

java com.ra.mainn.StartAccumulator

我正在使用 Java 8 和 Fedora。

任何想法都会很棒。 谢谢。

【问题讨论】:

  • 如果你 export CLASSPATH=libs/* 然后 cd 进入 bin 并运行 java 命令,它仍然有效吗?
  • 你的脚本也在运行bin目录?
  • 哦,实际上,如果我这样做,那不起作用,为什么会这样?
  • 我认为java应用程序的命令行是“java myApp.jar”,主类名在metainfo中找到。
  • 您将CLASSPATH 设置为libs/*,其中不包括bin/ 目录。当当前目录是bin 目录并且当前目录被静默添加到类路径时,它可能会起作用。

标签: java linux deployment build


【解决方案1】:

您应该在更改目录命令(cd /opt/repositories/CoreSystemsAccumulator/bin)之后将当前目录添加到类路径。

大概是这样的:

export CLASSPATH=.:$CLASSPATH

【讨论】:

    【解决方案2】:

    看来您正在覆盖 CLASSPATH。正确设置 CLASSPATH 以附加您的库。例如。

    CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java-5.1.24-bin.jar
    export CLASSPATH
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-25
      • 2011-04-25
      • 2011-08-21
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      相关资源
      最近更新 更多