在target / classes目录中运行“java ivy.IVYbot.IVYbot.Main”返回找不到主类错误

时间:2017-10-01 15:43:49

标签: java maven jar

我正在尝试使用Windows命令行来运行我的类文件。但是,当我尝试运行它时,没有任何工作,我只看到

Error: Could not find or load main class Main.

我在这个网站上尝试了几种不同的解决方案。 (我想要的类文件位于target / classes / ivy / IVYbot / IVYbot / Main.class中。)

> C:\Users\Ivy\Documents\GitHub\IVYbot\target\classes> java ivy.IVYbot.IVYbot.Main
Error: Could not find or load main class ivy.IVYbot.IVYbot.Main

> C:\Users\Ivy\Documents\Github\IVYbot> java -cp .;.\target\classes Main
Error: Could not find or load main class Main.

> C:\Users\Ivy\Documents\Github\IVYbot> java -cp .;.\target\classes ivy.IVYbot.IVYbot.Main
Error: Could not find or load main class ivy.IVYbot.IVYbot.Main.

> C:\Users\Ivy\Documents\Github\IVYbot\target\classes\ivy\IVYbot\IVYbot> java Main
Error: Could not find or load main class Main.

我甚至尝试通过Maven(带依赖项)将整个事件编译成.jar文件。

> C:\Users\Ivy\Documents\Github\IVYbot\target> java -jar IVYbot-0.0.1-SNAPSHOT-jar-with-dependencies.jar
no main manifest attribute, in IVYbot-0.0.1-SNAPSHOT-jar-with-dependencies.jar

虽然它应该,如

> C:\Users\Ivy\Documents\Github\IVYbot\target> jar tf IVYbot-0.0.1-SNAPSHOT-jar-with-dependencies.jar
META-INF/
META-INF/MANIFEST.MF
...

节目。我不知道我的路径有什么问题。我正在为我的Maven使用的插件,如果有用的话:

<build>
    <plugins>
        <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
</build>

1 个答案:

答案 0 :(得分:1)

使用maven插件编译并使用其依赖项组装jar后,可以使用以下命令运行您的类:

java -cp IVYbot-0.0.1-SNAPSHOT-jar-with-dependencies.jar ivy.IVYbot.IVYbot.Main

否则,如果您只想运行已编译的类,可以使用以下命令,但请记住位于编译类所在的目录中:

java -cp . Main

这是因为你必须指定类路径才能执行你的类,.告诉java使用当前目录作为类路径。