代码之家  ›  专栏  ›  技术社区  ›  Nope

VIM:从VIM命令运行Java给出错误

  •  2
  • Nope  · 技术社区  · 17 年前

    我编写了一个简单的hello world程序来测试JDK安装。我可以使用以下方法从VIM编译:

    :!javac Desktop\HelloWorld.java
    

    这很好,但是当我尝试使用以下方法运行程序时:

    :!java Desktop\HelloWorld
    

    它给了我这个错误:

    C:\Windows \Stase32 \CMD.EXE/C Java“桌面\ HeloWord” 线程“main”java.lang.noclasdeffounderror中出现异常:desktop\helloworld(w 荣名:地狱世界) 在Java.Lang.CultLooul.DealCeCase1(原生方法) 在Java.Lang.CultLooul.DealCeCasas(未知源) 在Java.Security .SecueCaseLoopule.DecurecLASS(未知源) 在Java.NET.URLCaseLooul.DealCeCLSASS(未知源) 在Java.NET.URLCaseLooul.Access 000美元(未知源) 在Java.NET.URLCaseLoad中运行1(未知源) 在Java.Security .Access控制器上。 在Java.NET.URLCaseLooper-FordCube(未知源) 在Java.Lang.CultLooul.. loadClass(未知源) 在Sun.Misc.Launcher$AppClassLoader.LoadClass(未知源) 在Java.Lang.CultLooul.. loadClass(未知源) 在Java.Lang.CultLooul.LoopCaseIn(未知源) 找不到主类:desktop\helloworld。程序将退出。

    程序在正常的命令行中运行正常。

    C:\Users\Casey\Desktop>java HelloWorld
    Hello world!
    

    如何在不必切换到标准命令的情况下从VIM执行程序?

    4 回复  |  直到 17 年前
        1
  •  5
  •   Tom Hawtin - tackline    17 年前

    java 不将文件名作为其第一个非选项参数。相反,它应该指定主类名(用 . 在包名和类名之间,如果有任何非默认包)。使用 -classpath 指定从何处加载类(目录用操作系统的目录分隔符分隔)( \ )

    :!java -classpath Desktop HelloWorld
    
        2
  •  2
  •   jsight TaherT    17 年前

    罪魁祸首是这句话:

    爪哇桌面

    您传递给“Java”程序的参数是类名,而不是路径名。如果文件在包“desktop.helloworld”(directory desktop\helloworld)中,则需要使用以下命令执行:

    Java桌面

    (以上所有假设都假定您位于“桌面”文件夹正上方的文件夹中)。

        3
  •  1
  •   chocojosh    17 年前

    当你从命令行运行Java时,你也在运行Java桌面\HeloWord吗?

    作为第一个建议,我建议您尝试运行以下程序,以便从同一目录编译和执行程序:

    :!光盘桌面 :!javac地狱世界.java :!爪哇语

        4
  •  1
  •   Javed Ahamed    17 年前

    我将在这里进行一个有意义的猜测,但是VIM可能无法识别路径变量,就像从命令行中调用Java一样。当然,如果你要在VIM中做大量的Java编码,你可能想看看。 this plugin .