Java windows“;无法找到或加载主类“;

Java windows“;无法找到或加载主类“;,java,groovy,jar,Java,Groovy,Jar,晚安。 我知道这类错误非常常见,我已经尝试过搜索它,但没有一个解决方案解决了我的问题 所以我有一个我想运行的jar,我尝试了java-jar-rembrandt.jar,遇到了问题“找不到或加载主类rembrandt.bin.rembrandt”,这个jar有一系列类似json的依赖项,我把所有依赖项都放在一个名为lib的文件夹中,所以我尝试了java-cp path-jar rembrandt.jar同样的错误 我在正确的文件夹中提取了jar和exist类。我还可以访问代码并确认该类有一个ma

晚安。 我知道这类错误非常常见,我已经尝试过搜索它,但没有一个解决方案解决了我的问题

所以我有一个我想运行的jar,我尝试了
java-jar-rembrandt.jar
,遇到了问题
“找不到或加载主类rembrandt.bin.rembrandt”
,这个jar有一系列类似json的依赖项,我把所有依赖项都放在一个名为lib的文件夹中,所以我尝试了
java-cp path-jar rembrandt.jar
同样的错误

我在正确的文件夹中提取了jar和exist类。我还可以访问代码并确认该类有一个main函数(这个类是groovy,但我认为这不应该造成干扰)

我想可能是依赖关系,有什么方法可以证实这一点,如果有,我可以知道每一个吗

 package rembrandt.bin

 import rembrandt.obj.*
 import saskia.bin.Configuration
 import rembrandt.io.*
 import org.apache.log4j.*
 import org.apache.commons.cli.*
 import java.util.jar.Manifest
 import java.util.jar.Attributes


  class Rembrandt {

    /**
     * Main method.
     */
    static void main(args) {

    def rembrandt, conf, conffilepath
    Options o = new Options()
    o.addOption("conf", true, "Configuration file")
    o.addOption("gui", true, "Activates a graphic GUI")
    o.addOption("help", false, "Gives this help information")

    CommandLineParser parser = new GnuParser()
    CommandLine cmd = parser.parse(o, args)

    if (cmd.hasOption("help")) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp( "java rembrandt.bin.Rembrandt", o )
        System.exit(0)
    }

    if (!cmd.hasOption("conf")) {
        conffilepath = Configuration.defaultconf
        log.info "No configuration file given. Using default configuration file."
    } else {
        conffilepath = cmd.getOptionValue("conf")
        log.info "Configuration file $conffilepath given."
    }

    conf = Configuration.newInstance(conffilepath)
    rembrandt = new Rembrandt(conf)
    log.info "Rembrandt version ${Rembrandt.getVersion()}. Welcome."

    if (cmd.hasOption("gui")) {

        RembrandtGui gui = new RembrandtGui(rembrandt, conf)//)
         gui.start()
        log.info "Rembrandt GUI started."

    } else {

        log.info "Invoking reader ${rembrandt.inputreader.class.name} to parse the input stream."  

        List<Document> docs = rembrandt.loadDocuments()
        log.info "Got ${docs.size()} doc(s). "

        // give labels if the doc does not have...
        String docid_header
        if (rembrandt.inputFileName) 
            docid_header = rembrandt.inputFileName 
        else 
            docid_header = 'stdin'

        rembrandt.printHeader()

        /* stats stuff */
        def stats = new DocStats(docs.size())
        stats.begin()
        docs.eachWithIndex { doc, i->
        if (!doc.docid) doc.docid = docid_header+"-"+(i+1)
        stats.beginDoc(doc.docid)
        doc = rembrandt.releaseRembrandtOnDocument(doc)
        rembrandt.printDoc(doc)
        stats.endDoc()                                
        stats.printMemUsage()     
        }
        stats.end()
        rembrandt.printFooter()
        log.info "All Done. Have a nice day."
   }
    }
}
包伦勃朗.bin
进口伦勃朗*
导入saskia.bin.Configuration
进口伦勃朗*
导入org.apache.log4j*
导入org.apache.commons.cli*
导入java.util.jar.Manifest
导入java.util.jar.Attributes
伦勃朗班{
/**
*主要方法。
*/
静态空隙干管(args){
def伦勃朗,conf,conffilepath
选项o=新选项()
o、 addOption(“conf”,true,“配置文件”)
o、 addOption(“gui”,true,“激活图形gui”)
o、 addOption(“帮助”,false,“提供此帮助信息”)
CommandLineParser parser=new GnuParser()
CommandLine cmd=parser.parse(o,args)
if(cmd.haspoption(“help”)){
HelpFormatter formatter=新的HelpFormatter();
printHelp(“javarembrandt.bin.rembrandt”,o)
系统退出(0)
}
如果(!cmd.haspoption(“conf”)){
conffilepath=Configuration.defaultconf
log.info“未提供配置文件。使用默认配置文件。”
}否则{
conffilepath=cmd.getOptionValue(“conf”)
log.info“给定的配置文件$conffilepath”
}
conf=Configuration.newInstance(conffilepath)
伦勃朗=新伦勃朗(形态)
log.info“伦勃朗版本${Rembrandt.getVersion()}。欢迎使用。”
if(cmd.haspoption(“gui”)){
伦勃朗gui=新伦勃朗gui(伦勃朗,形态)/)
gui.start()
log.info“伦勃朗GUI已启动。”
}否则{
log.info“调用读取器${rembrandt.inputreader.class.name}来解析输入流。”
List docs=rembrandt.loadDocuments()
log.info“获得${docs.size()}个文档。”
//如果文档没有。。。
字符串docid_头
if(伦勃朗.输入文件名)
docid_header=rembrandt.inputFileName
其他的
文档ID_标题='stdin'
伦勃朗
/*统计资料*/
def stats=new DocStats(docs.size())
stats.begin()
docs.eachWithIndex{doc,i->
如果(!doc.docid)doc.docid=docid_头+“-”+(i+1)
stats.beginDoc(doc.docid)
文件=伦勃朗。发布伦勃朗文件(文件)
伦勃朗。打印文档(doc)
stats.endDoc()
stats.printMemUsage()
}
stats.end()
伦勃朗
log.info“全部完成。祝您有愉快的一天。”
}
}
}
这段代码是main类的一部分,正如您所看到的,它有一个main,包是正确的。
感谢您的支持

您需要创建清单文件

1) 创建manifest.txt

2) 在manifest.txt中,您应该添加以下行:主类:伦勃朗 然后按两次“回车”按钮

3) 通过命令提示符创建jar文件:#jar cfm Your_jar_file_name.jar manifest.txt


另外,不要忘记在项目中添加JAR文件(确保它们都在一个包(文件夹)中)

您需要创建清单文件

1) 创建manifest.txt

2) 在manifest.txt中,您应该添加以下行:主类:伦勃朗 然后按两次“回车”按钮

3) 通过命令提示符创建jar文件:#jar cfm Your_jar_file_name.jar manifest.txt


另外,别忘了在项目中添加JAR文件(确保它们都在一个包(文件夹)中)

谢谢你的快速回答,但是我正在运行的JAR已经在meta inf文件夹中包含了这些信息,所以这不应该是problem@user3591111尝试删除第一行-“package rembrandt.bin”.此外,我看不到“;”;这是因为它是groovy,第一行是包的名称是正确的,因为当它调用main时,它调用rembrandt.bin.RembrandtThanks以获得您的快速答案,但我正在运行的jar已经在meta inf文件夹中包含了该信息,因此不应该是problem@user3591111尝试删除第一行-“包伦勃朗。宾”。而且,我看不到”;";这是因为它是groovy,第一行是包的名称是正确的,因为当它调用main时它调用rembrandt.bin.rembrandit这个项目托管在网上?在哪里?这是一个rembrandt项目。这是你的项目,你是想通过main类运行它吗?还是你只是把rembrandt用作一个库?如果是,请提供acce这是一个伦勃朗的项目。这是你的项目,你是想通过主类运行它吗?还是你只是将伦勃朗用作一个库?如果是,请提供你使用此库的项目的访问权限。