我使用自定义构建系统来编译和运行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类在SublimeText3中工作?
答案 0 :(得分:2)
不,没有。与documented here extensively一样,Sublime在编辑器中直接运行程序时不支持输入(例如使用您拥有的构建系统)。但是,Windows上有一种解决方法:首先通过cmd.exe
的实例运行程序。
{
"cmd": ["javac", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.java",
"shell": true,
"variants":
[
{
"name": "Run",
"cmd": ["start", "cmd", "/k", "java", "$file_base_name"],
"shell": true
}
]
}
/k
选项会在程序运行完毕后保持窗口打开,因此您可以检查输出,错误等。如果您希望立即关闭它,只需使用/c
。根据错误消息,我删除了javac
和java
可执行文件的完整路径,因为它已经在PATH
中。它使构建系统更清晰,更易于理解。