gpt4 book ai didi

Java JAR 文件找不到类

转载 作者:行者123 更新时间:2023-12-02 09:29:24 24 4
gpt4 key购买 nike

我有以下代码:

package deerangle;

public class Renamer implements org.jetbrains.java.decompiler.main.extern.IIdentifierRenamer {

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

public long counter = 0;

public boolean toBeRenamed(Type elementType, String className, String element, String descriptor) {
return !(elementType == Type.ELEMENT_CLASS && className.length() < 4);
}

public String getNextClassName(String fullName, String shortName) {
return "Class" + ++counter;
}

public String getNextFieldName(String className, String field, String descriptor) {
return "field" + className + "C" + ++counter;
}

public String getNextMethodName(String className, String method, String descriptor) {
return "method" + className + "C" + ++counter;
}

}

此文件 Renamer.java 位于文件夹 deerangle 内。

首先,我运行 javac deerangle/Renamer.java

然后我运行 jar cvf Renamer.jar deerangle/Renamer.class

这将创建一个包含我的类文件的 jar 文件。

当我现在运行 java -cp Renamer.jar deerangle.Renamer 时,它显示:错误:无法找到或加载主类 deerangle.Renamer

我认为这并不重要,但这是我在代码中实现的类:

// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.java.decompiler.main.extern;

public interface IIdentifierRenamer {

enum Type {ELEMENT_CLASS, ELEMENT_FIELD, ELEMENT_METHOD}

boolean toBeRenamed(Type elementType, String className, String element, String descriptor);

String getNextClassName(String fullName, String shortName);

String getNextFieldName(String className, String field, String descriptor);

String getNextMethodName(String className, String method, String descriptor);
}

为什么我会收到错误消息?我做错了什么?

最佳答案

如果我取出您指定的界面并按照您的所有步骤操作,一切都会正常工作,并且它们会打印出字样到我的控制台。因此,我怀疑这与您的实现的 IIdentifierRenamer interface 有关,并且您的所有依赖项都是在编译时找到的,而不是在 <运行时。

一个选项是将所有依赖项打包到 jar 文件中,以便在运行时期间可用。

我建议您为此使用构建工具,例如 Maven to Gradle。

最近刚刚帮助某人解决了类似的问题,但他们已经“mavenized”了他们的项目...... Error: package does not exist

关于Java JAR 文件找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com