Android Studio 无法找到或加载 "Scratch" 文件的主要 class
Android Studio could not find or load main class of "Scratch" file
更新:以下问题一直持续到Android Studio 3.4.2
。
我使用 Android Studio 3.3
并创建了一个 scratch
文件 (File > new > Scratch File > Java
)。 IDE 在 ~/.AndroidStudio3.3/config/scratches
中创建了 scratch.java
:
class Scratch {
public static void main(String[] args) {
}
}
但是当我 运行 临时文件时(通过按 class 名称或 main
方法附近的绿色按钮),我得到这个错误:
Error: Could not find or load main class Scratch
我认为 IDE 不会生成 Scratch.class
,因此 Java
找不到它。有没有办法解决这个问题并从 IDE 运行 宁临时文件(不使用 Terminal
)?
更新
我刚刚注意到此问题已在 Android Studio 3.5 中修复!
我让它工作的唯一方法(在 Android Studio 3.4.1 中)是这种非常肮脏的方法:
- 前往
Run
> Edit Configurations
> Scratch
- 在
Before launch
底部添加(+)Run External tool
在外部工具弹出窗口中按+
并填写以下内容Tool Settings
姓名: Compile Scratch
计划:javac
参数:$FileName$
工作目录:你的临时文件目录
- 按确定
再次在外部工具弹出窗口中按 +
并填写以下内容 Tool Settings
姓名: Run Scratch
计划:java
参数:$FileClass$
工作目录:你的临时文件目录
- 按确定并在 Run/Debug 配置中应用
奇怪的是,只有当您使用 class/main 声明旁边的绿色箭头时,这才有效。如果您使用菜单中的 运行 按钮,这也会失败。
您仍然会在 运行 window 的 Scratch
选项卡中收到未找到错误。但是会弹出两个额外的选项卡(每个外部工具一个)。在 Run Scratch
选项卡中,您将获得输出。
我个人不喜欢这个,但这是我想出的最好的解决方法。
更新:以下问题一直持续到Android Studio 3.4.2
。
我使用 Android Studio 3.3
并创建了一个 scratch
文件 (File > new > Scratch File > Java
)。 IDE 在 ~/.AndroidStudio3.3/config/scratches
中创建了 scratch.java
:
class Scratch {
public static void main(String[] args) {
}
}
但是当我 运行 临时文件时(通过按 class 名称或 main
方法附近的绿色按钮),我得到这个错误:
Error: Could not find or load main class Scratch
我认为 IDE 不会生成 Scratch.class
,因此 Java
找不到它。有没有办法解决这个问题并从 IDE 运行 宁临时文件(不使用 Terminal
)?
更新
我刚刚注意到此问题已在 Android Studio 3.5 中修复!
我让它工作的唯一方法(在 Android Studio 3.4.1 中)是这种非常肮脏的方法:
- 前往
Run
>Edit Configurations
>Scratch
- 在
Before launch
底部添加(+)Run External tool
在外部工具弹出窗口中按
+
并填写以下内容Tool Settings
姓名:
Compile Scratch
计划:
javac
参数:
$FileName$
工作目录:你的临时文件目录
- 按确定
再次在外部工具弹出窗口中按
+
并填写以下内容Tool Settings
姓名:
Run Scratch
计划:
java
参数:
$FileClass$
工作目录:你的临时文件目录
- 按确定并在 Run/Debug 配置中应用
奇怪的是,只有当您使用 class/main 声明旁边的绿色箭头时,这才有效。如果您使用菜单中的 运行 按钮,这也会失败。
您仍然会在 运行 window 的 Scratch
选项卡中收到未找到错误。但是会弹出两个额外的选项卡(每个外部工具一个)。在 Run Scratch
选项卡中,您将获得输出。
我个人不喜欢这个,但这是我想出的最好的解决方法。