我正在尝试使用 BFG repo Cleaner 清理 Git 存储库(删除密码):
这是 GitHub 官方推荐的一个热门项目:
我理解的预期操作是:
passwords.txt
文件,并将要替换的每个密码放在不同的行上。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" )
我在 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计算机出现上述错误而另一台计算机可以顺利运行?
感谢您的任何想法。
它似乎在我的机器(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?
注意,您看到的错误消息可能是在此之后触发的。您应该能够在您的系统上复制此内容。