【问题标题】:Error: Could not find or load main class in maven project错误:无法在 Maven 项目中找到或加载主类
【发布时间】:2018-05-20 16:22:49
【问题描述】:

我遇到了一个奇怪的问题。每当我添加 selenium 3x jar 文件时,我都会在我的 maven 项目的基本 hello world 程序中收到“错误:无法找到或加载主类” pom.xml 2.53 selenium jar 文件或添加任何其他依赖项中没有此类问题。仅在添加此特定 jar 时才会出现此问题。我正在使用 Eclipse (Oxygen) March 版本。系统“1.8.0_102”中的Java版本

public class hello2 {

    public static void main(String[] args) {
        System.out.println("hello");
    }
}

我的 Maven 依赖项

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
   <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.5.3</version>
</dependency>

  </dependencies>
</project>

problems

【问题讨论】:

  • 是否有错误消息/堆栈跟踪?在我的脑海中,也许你有一些其他依赖的版本控制问题,除了你在你的 POM 中强制版本。
  • 你介意发布你的整个 pom 吗?
  • 我已经发布了整个pom..请正确阅读@vatbub
  • Got to project 右键单击​​ maven n 更新 maven 项目
  • 已经更新。干净安装测试。一切都试过了

标签: java maven selenium selenium-webdriver webdriver


【解决方案1】:

您的问题不清楚为什么需要 selenium 3x jars,因为您的代码不需要任何 selenium jar。此外,细节上的错误将帮助我们以更好的方式调试您的问题。

但是,2(两个)问题非常明显,如下所示:

  • 您使用的是非常古老的 JDK 1.8.0_102
  • 您使用的是相当旧的 org.seleniumhq.selenium v​​ 3.5.3
  • 从快照看来,由于 Selenium 2.53Selenium 3.5.3 的多个 jar 的存在,.m2/repository 可能已损坏strong> 存储库。

解决方案

  • JDK 升级到最新级别 JDK 8u171
  • 如果您对 Selenium 没有任何依赖关系,请完全删除 selenium jar 依赖关系。
  • 如果您对 Selenium 有依赖项,请添加最新的 selenium 依赖项,如下所示:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-server</artifactId>
        <version>3.12.0</version>
    </dependency>  
    
  • 如果 .m2/repository 已损坏删除 .m2 子目录。

  • 从控制台执行:mvn clean(清除以前的依赖项)
  • 从控制台执行:mvn install(安装必要的依赖项)
  • 从控制台执行:mvn test(执行您的程序)

【讨论】:

    【解决方案2】:

    我不确定这是否是问题的实际原因,但要让 maven 将有关主类的信息添加到 jar 的清单中,您必须明确告诉 maven 这样做。我为此使用maven-assembly-plugin。它将所有依赖项和我的代码打包到一个可运行的 jar 中:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <archive>
                <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    <mainClass>com.example.package.MainClass</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 2017-07-17
      • 1970-01-01
      • 2015-06-04
      • 2020-08-29
      • 2012-06-22
      • 2023-02-19
      • 1970-01-01
      相关资源
      最近更新 更多