Java:运行流行的 .jar 文件来清理 Git 存储库 (BFG) 时,“检查 Java 版本后找不到要运行的目标主类”

问题描述 投票:0回答:1

BFG 回购清理器

我正在尝试使用 BFG repo Cleaner 清理 Git 存储库(删除密码):

这是 GitHub 官方推荐的一个热门项目:

预期用途

我理解的预期操作是:

  1. 确保安装了最新的 Java (Java 8)
  2. 下载当前的 BFG .jar 文件(所有版本此处,现在为 1.14.0),并将其放入您想要影响的项目的 .git 文件夹中。
  3. 在同一目录中创建
    passwords.txt
    文件,并将要替换的每个密码放在不同的行上。
  4. 确保最新提交已手动删除敏感数据(密码)。
  5. 运行
    java -jar bfg.jar --replace-text passwords.txt
    ,它将清除旧的提交。

错误

但是,这会从管理员 cmd 和 Windows 上的 Ubuntu 返回以下错误:

Couldn't find the target main class to run after checking the Java version.

The attribute should be in the Jar manifest and called Main-Class-After-UseNewerJava-Check

主要课程

mainClass 在这里定义,它出现在代码中,尽管我不了解 Java 或 Java 项目如何工作(我编写 C++ 和 C# 代码):

https://github.com/rtyley/bfg-repo-cleaner/blob/master/bfg/build.sbt

mainClass := Some("use.newer.java.Version8")
packageOptions in (Compile, packageBin) +=
  Package.ManifestAttributes( "Main-Class-After-UseNewerJava-Check" -> "com.madgag.git.bfg.cli.Main" )

JAVA版本

我在 Windows 中卸载并重新安装了 Java 8,并从 cmd java -version 获取:

java version "1.8.0_401"
Java(TM) SE Runtime Environment (build 1.8.0_401-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.401-b10, mixed mode)

从 Windows 上的 Ubuntu 我得到:

openjdk version "11.0.21" 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

即使只是从

java -jar bfg.jar
没有其他命令,这两个都会给出相同的错误。

计算机特定问题

我在另一个Windows系统上进行了测试,这并没有提供与

java -jar bfg.jar
相同的错误(它提供了帮助信息)。

所以这显然是一个与单个计算机系统相关的问题,尽管我不确定是什么。

是否有任何可能的原因导致一台Windows计算机出现上述错误而另一台计算机可以顺利运行?

感谢您的任何想法。

java git maven github mainclass
1个回答
0
投票

它似乎在我的机器(MacBook、OpenJDK 18)上运行到帮助消息

ravn@freewifi /tmp % java -version
openjdk version "18.0.2.1" 2022-08-18
OpenJDK Runtime Environment Zulu18.32+13-CA (build 18.0.2.1+1)
OpenJDK 64-Bit Server VM Zulu18.32+13-CA (build 18.0.2.1+1, mixed mode, sharing)
ravn@freewifi /tmp % curl -O https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13.8M  100 13.8M    0     0  8101k      0  0:00:01  0:00:01 --:--:-- 8100k
ravn@freewifi /tmp % echo muh > pass
ravn@freewifi /tmp % git init
Initialized empty Git repository in /private/tmp/.git/
ravn@freewifi /tmp % java -jar bfg-1.14.0.jar --replace-text pass

Using repo : /private/tmp/.git

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at use.newer.java.Util.invokeMainMethod(Util.java:89)
    at use.newer.java.Util.executeMainProgram(Util.java:28)
    at use.newer.java.Util.checkJavaVersionAndExecuteMainProgram(Util.java:18)
    at use.newer.java.Version8.main(Version8.java:5)
Caused by: java.lang.IllegalArgumentException: Couldn't find 'HEAD' in /private/tmp - are you sure that exists?


注意,您看到的错误消息可能是在此之后触发的。您应该能够在您的系统上复制此内容。

© www.soinside.com 2019 - 2024. All rights reserved.