Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;找不到主类“;在Java Salesforce应用程序中_Java_Eclipse_Salesforce_Classnotfoundexception - Fatal编程技术网

&引用;找不到主类“;在Java Salesforce应用程序中

&引用;找不到主类“;在Java Salesforce应用程序中,java,eclipse,salesforce,classnotfoundexception,Java,Eclipse,Salesforce,Classnotfoundexception,我一直在Eclipse中构建一个应用程序,它从salesforce提取数据,并使用导入的CSV文件更新和插入记录。它在Eclipse中运行良好,我很高兴它已经准备好进行部署,但是如果我尝试从cmd运行它或双击Jar,我就无法让应用程序工作。我得到这个错误: Exception in thread "main" java.lang.NoClassDefFoundError: uploader/jar Caused by: java.lang.ClassNotFoundException: uplo

我一直在Eclipse中构建一个应用程序,它从salesforce提取数据,并使用导入的CSV文件更新和插入记录。它在Eclipse中运行良好,我很高兴它已经准备好进行部署,但是如果我尝试从cmd运行它或双击Jar,我就无法让应用程序工作。我得到这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: uploader/jar
Caused by: java.lang.ClassNotFoundException: uploader.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: uploader.jar.  Program will exit.
我已经在谷歌搜索过了,尝试过了所有的解决方案,但找不到为什么它不起作用。下面是我用来构建jar并运行它的步骤,如果有人能告诉我哪里出了问题,我会很高兴!我不是java程序员

顺便说一下,这个项目和包一样被称为uploader

  • 在项目上单击鼠标右键,然后单击“导出”。选择“Jar文件”并 下一个
  • 选择我的项目作为资源,并确保.classpath和.project 文件被选中。选择导出生成的类文件和 ,压缩JAR文件的内容,并选择 Jar文件的位置,然后点击Next
  • 选择导出带有编译错误和警告的类文件。 选择在工作区中保存此JAR的描述,然后 将位置指定为/uploader/jardesc.jardesc。点击下一个
  • 选择生成清单文件,将清单保存在 并使用生成的JAR中保存的清单 描述文件
  • 单击Browse并单击Next,将主类指向正确的位置 选择给我的唯一选项是uploader.Main, 然后单击Finish
  • 如果现在打开清单文件,我会看到以下内容:

    Manifest-Version: 1.0
    Main-Class: uploader.Main
    
    所以在我看来这是正确的

    但是,如果我打开一个命令提示符,将cd转到包含jar文件的目录,然后说javauploader.jar,那么我就会得到上面的错误

    有人能看到任何看起来不对劲的东西吗?我过不了这一关

    如果使用java-jar uploader.jar运行,则会出现以下错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: com/sforce/ws/ConnectionException
    Caused by: java.lang.ClassNotFoundException: com.sforce.ws.ConnectionException
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
    Could not find the main class: uploader.Main. Program will exit.
    
    也许这有助于找出问题所在

    *编辑*

    我已将manifest.mf文件编辑为此,但仍会收到错误:

    Manifest-Version: 1.0
    Main-Class: uploader.Main
    Class-Path: lib/enterprise.jar lib/wsc-22.jar
    

    问题似乎是缺少类路径设置,即添加所需的类和库的定义。在您的例子中,似乎至少需要向类路径添加一些salesforce jar


    将类路径放入清单文件或将其添加到命令行:
    java-cp-jar uploader.jar

    在命令行上,它将不是
    java uploader.jar
    ,而是
    java-jar uploader.jar
    。感谢您的回复@Thomas,请查看我编辑的问题以获得回复。@StevenHayhurst,
    .classpath
    文件用于Eclipse。命令行Java甚至不知道这个文件存在。我不知道,所以谢谢。我已经更改了清单文件,但仍然收到错误。检查问题以了解我的答案file@StevenHayhurst我假设
    lib
    文件夹就在
    uploader.jar
    的旁边,您正在从这两个文件夹执行命令行,对吗?我进一步假设您确信所讨论的类包含在这些jar中。没错。lib文件夹和uploader.jar位于同一个“uploader”目录中,如果我在winRAR中打开lib/wsc-22.jar,我可以看到com/sforce/ws/ConnectionException.java确实存在。我将命令行cd刻录到“uploader”目录,并从那里执行。感谢您的持续帮助@Thomas!