Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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类文件的执行_Java_Visual Studio Code - Fatal编程技术网

Java类文件的执行

Java类文件的执行,java,visual-studio-code,Java,Visual Studio Code,当我试图在包中执行java文件时,集成终端找不到类文件。我应该如何配置vscode或命令来自动在命令上添加包,如java package.File或自动搜索类文件?我正在使用code Runner扩展名和以下命令:“java”:“cd$dir&&javac-d\”$workspaceRoot/java/bin/\“$fileName&&cd\”$workspaceRoot/java/bin/\“&&java$fileNameWithoutExt。当java文件不在包中时,这种方法可以工作。您需要

当我试图在包中执行java文件时,集成终端找不到类文件。我应该如何配置vscode或命令来自动在命令上添加包,如
java package.File
或自动搜索类文件?我正在使用
code Runner
扩展名和以下命令:
“java”:“cd$dir&&javac-d\”$workspaceRoot/java/bin/\“$fileName&&cd\”$workspaceRoot/java/bin/\“&&java$fileNameWithoutExt
。当java文件不在包中时,这种方法可以工作。

您需要让
java
作为
类名运行。例如,如果您的类如下所示:

package com.something;

class Something {
  public static void main(String[] args) {
    System.out.println("Hello World");
  }
};
您可以使用以下命令运行
javac

javac -d . Something.java
然后,您需要确保
java
知道要运行哪个包:

java com.something.Something;
换句话说,您需要明确地告诉
java
您的主类在哪个包中

基本上,您需要在vscode内部创建另一个变量,该变量允许您将包添加到命令的开头:

"java": "cd $dir && javac -d \"$workspaceRoot/java/bin/\" $fileName && cd \"$workspaceRoot/java/bin/\" && java $filePackage.$fileNameWithoutExt
不幸的是,它看起来不像已经定义了java包变量,因此您必须通过下载包的源代码并对其进行黑客攻击来创建它,或者从包作者处请求一个变量

更新

看起来这已经是CodeRunner包中的一个问题:。您可能希望查看此问题的更新,并在修复扩展后升级扩展


作为一种临时解决方法,我认为不为主类指定包就行了。所有其他类都将使用
import
,因此这对这些类来说并不重要,但是将您的主类保留在顶级包中,VSCode代码运行程序应该可以按预期工作。

尝试的一件事是看看您是否可以在非集成终端中运行相同的命令(即运行
javac-d“PATH”)filename.java&&java filenameWithoutExt
本地。这可能会揭示错误,我怀疑是
java
命令行工具缺少类路径参数。问题是我不知道如何使用/创建类路径