如何解决vscode coderunner 执行java代码有问题
我有以下结构:
java_projects > chapter9
通常我 cd 到一个高于 java_projects 的目录,然后编写 java_projects 以从该位置创建一个工作区目录。现在,在第 9 章中,我有以下文件:
Tv.java,TestTv.java
package chapter9;
public class TestTv {
public static void main(String[] args){
Tv tv = new Tv();
tv.turnOn();
tv.setChannel(30);
tv.setVolume(3);
System.out.println("Tv channel is: " + tv.channel);
// testing java date class
java.util.Date date = new java.util.Date();
System.out.println("time elapsed since jan 1,1970 is: " + date.getTime() + "milliseconds");
System.out.println(date.toString());
}
}
TestTv.java:5: error: cannot find symbol
Tv tv = new Tv();
^
symbol: class Tv
location: class TestTv
TestTv.java:5: error: cannot find symbol
Tv tv = new Tv();
^
symbol: class Tv
location: class TestTv
我不太确定为什么会发生这种情况。经过进一步调查,我了解到这与在 Java 程序中使用之前首先编译 Tv 类有关。好的,所以我查看了 vscode 中的 settings.json 并将其更改为:
"java": cd $dir && javac *.java && java $fileName"
这仍然给我同样的错误。
所以我退出了chapter9 目录并尝试了javachapter9/TestTv.java 并且成功了!!
如何告诉 vscode 的执行器映射返回上一级并执行它?
谢谢
{
"code-runner.clearPrevIoUsOutput": true,"code-runner.ignoreSelection": true,"code-runner.saveAllFilesBeforeRun": true,"java.autobuild.enabled": true,"code-runner.fileDirectoryAsCwd": false,"java.configuration.updateBuildConfiguration": "automatic","code-runner.executorMap": {
"java": "cd $dir && javac *.java && java $fileName"
},"code-runner.runInTerminal": true,
}
附上我的电视课
public class Tv {
// instance variables
int channel = 1; // default channel is 1
int volumeLevel = 1;
boolean on = false; // Tv is off
public Tv(){};
public void turnOn(){
on = true;
}
public void turnOff(){
on = false;
}
public void setChannel(int newChannel){
if (on && newChannel >= 1 && newChannel <= 120)
channel = newChannel;
}
public void setVolume(int newVolumeLevel){
if (on && newVolumeLevel >= 1 && newVolumeLevel <= 7){
volumeLevel = newVolumeLevel;
}
}
public void channelUp(){
if (on && channel < 120)
channeL++;
}
public void channelDown(){
if (on && channel > 1)
channel--;
}
public void volumeUp(){
if (on && volumeLevel < 7)
volumeLeveL++;
}
public void volumeDown(){
if (on && volumeLevel > 1)
volumeLevel--;
}
我正在寻找这样的东西?
"java": cd $dir && javac *.java && java (go back one directory up) $dir[my_folder_name]fileName"
这样的事情...
"java": cd $dir && javac *.java && cd .. java chapter9/TestTv.java"
我不知道我不能说得更清楚了。我有一个 mac OSX、sierra、javaSE11。我认为这与操作系统无关。它更多的是一个编译问题。去 vscode 的 github 没有帮助,因为他们不回复任何东西。
解决方法
我对这个主题不太熟悉,但是基于在您的问题/答案中查看此语法并将“&&”语法视为一系列脚本,您似乎还需要一个“&&”组合,因此在调用 java-interpreter 作为最后一件事之前,“cd ..”向上移动到父目录。
所以: "java": cd $dir && javac *.java && cd .. && java Chapter9.TestTv"
另外,我对 mac 要求不太熟悉,但我知道有些系统不介意“cd ..”,而有些系统只在空格中加上“cd ..”,所以在输入时要小心..
,我对这个话题也不是很熟悉。我进行了一些试验和错误,并设法使其与以下内容一起使用:
"code-runner.executorMap": {
"java": "cd $dir && javac *.java && cd .. && java \"$(basename $dir)/$fileNameWithoutExt\""
}
值得注意的部分/变化:
-
&& cd ..
向上移动一个目录。 -
$(basename $dir)
返回最内部的目录。chapter9
在您的示例中,但如果您更改到另一个目录,则不必更改它。 -
$fileNameWithoutExt
:运行时不带扩展名的代码文件的基本名称,如配置下的 here 所述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。