You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

终端运行JUnit测试遇双错误求助:无主清单属性+org.junit包不存在

问题描述

  1. 直接在终端运行JUnit测试命令报错:
C:\work\apps\jdk1.8.0_131-x64\bin\java -jar C:\work\apps\jdk1.8.0_131-x64\bin\junit-4.13.2.jar 
C:\Users\silvacl1\Desktop\actimizemse-batch-java\src\main\java\com\natixis\tests\junit\JunitTests

错误信息:no main manifest attribute, in C:\work\apps\jdk1.8.0_131-x64\bin\junit-4.13.2.jar

  1. 执行编译命令时报错:
C:/work/apps/jdk1.8.0_131-x64/bin/javac -cp     
C:/Users/silvacl1/.m2/repository/com/github/noraui/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.jar;C:/Users/silvacl1/.m2/repository/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar;C:/Users/silvacl1/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar;C:/Users/silvacl1/.m2/repository/org/apache/httpcomponents/httpcore/4.4/httpcore-4.4.jar;C:/Users/silvacl1/.m2/repository/org/junit.jar;. -d out -sourcepath . 
src/main/java/com/natixis/tests/main/TestsMain.java src/main/java/com/natixis/ws/util/*.java 
src/main/java/com/natixis/tests/junit/*.java 
src/main/java/com/natixis/tests/junit/JunitTests.java              
src\main\java\com\natixis\tests\junit\JunitTests.java

错误信息:package org.junit does not exist

已在pom.xml添加依赖:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <scope>test</scope>
</dependency>

解决方案

1. 修复「no main manifest attribute」错误

JUnit的jar包本身未定义主类,不能直接用java -jar启动。正确方式是指定JUnit运行器类org.junit.runner.JUnitCore,同时将JUnit jar和编译后的测试类加入类路径:

C:\work\apps\jdk1.8.0_131-x64\bin\java -cp "C:\work\apps\jdk1.8.0_131-x64\bin\junit-4.13.2.jar;C:\Users\silvacl1\Desktop\actimizemse-batch-java\out" org.junit.runner.JUnitCore com.natixis.tests.junit.JunitTests
  • 用-cp指定类路径,包含JUnit jar文件和编译后的class文件输出目录(这里假设输出目录为out)
  • 最后指定测试类的全限定类名

2. 修复「package org.junit does not exist」编译错误

原因

  • pom.xml中JUnit依赖的scope为test,该依赖仅在测试阶段生效,直接用javac编译主代码时不会自动引入
  • 编译命令中指定的C:/Users/silvacl1/.m2/repository/org/junit.jar路径错误,Maven仓库中JUnit的实际路径应为C:/Users/silvacl1/.m2/repository/junit/junit/4.13/junit-4.13.jar(与pom中版本对应)

修复方式

方式一:修正编译命令的类路径

替换错误的JUnit jar路径,同时清理重复的编译条目:

C:/work/apps/jdk1.8.0_131-x64/bin/javac -cp "C:/Users/silvacl1/.m2/repository/junit/junit/4.13/junit-4.13.jar;C:/Users/silvacl1/.m2/repository/com/github/noraui/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.jar;C:/Users/silvacl1/.m2/repository/com/sun/mail/javax.mail/1.6.2/javax.mail-1.6.2.jar;C:/Users/silvacl1/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar;C:/Users/silvacl1/.m2/repository/org/apache/httpcomponents/httpcore/4.4/httpcore-4.4.jar;." -d out -sourcepath . src/main/java/com/natixis/tests/main/TestsMain.java src/main/java/com/natixis/ws/util/*.java src/main/java/com/natixis/tests/junit/*.java
  • Windows系统下类路径用分号;分隔,路径含空格时需用引号包裹
方式二:用Maven编译运行(推荐)

依赖pom.xml的配置,直接用Maven命令处理,无需手动维护类路径:

  • 编译项目:mvn compile
  • 运行所有JUnit测试:mvn test
  • 单独运行指定测试类:
mvn test -Dtest=JunitTests

注意:若测试类放在src/main/java下,建议移至src/test/java目录(符合Maven项目结构规范),test scope的依赖默认仅作用于该目录下的代码。若不想移动,需将pom中JUnit的scope改为compile,或编译主代码时手动引入测试依赖。

内容的提问来源于stack exchange,提问作者Claudia Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:45:22