Java SublimiteText3不';无法识别扫描仪类

Java SublimiteText3不';无法识别扫描仪类,java,sublimetext2,sublimetext,sublimetext3,Java,Sublimetext2,Sublimetext,Sublimetext3,我正在使用一个定制的构建系统来编译和运行java程序 构建系统: { "cmd": ["C:\\Program Files (x86)\\Java\\jdk1.8.0\\bin\\javac", "$file"], "file_regex": "^(...*?):([0-9]*):?([0-9]*)", "selector": "source.java", "variants": [ { "name": "Run",

我正在使用一个定制的构建系统来编译和运行java程序

构建系统:

{
     "cmd": ["C:\\Program Files (x86)\\Java\\jdk1.8.0\\bin\\javac", "$file"],
     "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
     "selector": "source.java",
     "variants":
     [
     {
          "name": "Run",
          "cmd": ["C:\\Program Files (x86)\\Java\\jdk1.8.0\\bin\\java.exe", "$file_base_name"]
     }
     ]
}
只要我从不要求输入,这就可以完美地工作。这就是我在这个简单程序中遇到的错误:

节目:

import java.util.Scanner;

public class Test
{
    public static void main(String [] args)
    {
        Scanner leopard = new Scanner(System.in);

        int a = leopard.nextInt();
        System.out.println(a);
    }
}
错误:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Test.main(Test.java:9)
[Finished in 1.3s with exit code 1]
[cmd: ['C:\\Program Files (x86)\\Java\\jdk1.8.0\\bin\\java.exe', 'Test']]
[dir: C:\Users\yayu\Desktop]
[path: C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Java\jdk1.8.0\bin]

我的问题是,是否有任何方法可以让Scanner类在SublimiteText3中工作?

不,没有。一直以来,当直接在编辑器中运行程序时(例如使用现有的构建系统),Sublime不支持输入。但是,Windows上有一个变通方法:首先通过
cmd.exe的实例运行程序

{
“cmd”:[“javac”,“$file”],
“文件正则表达式”:“^(…*?):([0-9]*):?([0-9]*)”,
“选择器”:“source.java”,
“壳”:没错,
“变体”:
[
{
“名称”:“运行”,
“cmd”:[“start”、“cmd”、“/k”、“java”、“$file\u base\u name”],
“壳”:真的吗
}
]
}

/k
选项会在程序运行完成后保持窗口打开,因此您可以检查输出、错误等。如果希望立即关闭,只需使用
/c
。根据错误消息,我删除了
javac
java
可执行文件的完整路径,因为它已经在
路径中了。它使生成系统更干净、更容易理解。

我遇到了这样的错误:“[WinError 2]当我尝试运行它时,系统找不到指定的文件。@yayu您是否尝试过删除
.class
文件,重新编译,然后再次运行?我的Java知识有点有限,所以我不太确定还有什么建议。您可能还想尝试将
.exe
添加回
javac
java
命令,看看这是否是问题所在。我确实尝试过删除.class文件并重新编译。我也添加了.exe,但仍然得到相同的错误。如果你有别的想法,请告诉我。同时我会继续摆弄它。谢谢你的帮助@yayu-好的,还有一件事-请看我上面的编辑。我在build和run命令中都添加了
“shell”:true
。希望这会有所不同
“shell”:true
表示通过Windows下的shell-
cmd.exe
执行由
“cmd”
定义的命令
start
不是外部程序,而是
cmd.exe
的内部命令。因此,需要设置
“shell”:true
,以便
启动
命令工作。