如何运行扩展另一个目录中的类的 java .class 文件?

问题描述

我第一次在我的 Ideas 中遇到这个问题,我写了一个扩展 javax.servlet.http.HttpServlet 的类,我的 Ideas 抛出了一条错误消息,内容Error:Could not find or load主类com.bjpowernode.Oneservlet图片如下: enter image description here

可以看到Idea没有显示红色波浪线,说明我的代码没问题。我从 enter link description here 找到了解决此问题的方法,我将范围从提供的更改为编译: enter image description here 但我实际上想知道它为什么以及它是如何工作的?我对比了不同范围设置下Idea编译指令的差异,发现Idea使用java命令运行.Class时,编译范围命令的参数-classpath多了两条路径: D:\apache-tomcat-8.0.50\lib\jsp-api.jar;D:\apache-tomcat-8.0.50\lib\servlet-api.jar 也就是说,Idea在提供的作用域下运行.class时没有考虑外部库路径,超类HttpServlet来自servlet-api.jar包。为什么? 为了简化问题,我在两个不同的路径和包下创建了两个不同的类:Class Base 和 Class Sub,以及 Sub extends Base。 基地的代码在这里

package base;
public class Base{
    public static void main(String[] args) {
    
    }
}

Sub 的代码在这里

package sub;
import base.Base;
public class Sub extends Base{
    public static void main(String[] args) {
        System.out.println("In Sub");
    }
}

Base的路径是./path1/base/Base.java,Sub的路径是./path2/sub/Sub.java。 我使用这两个命令编译它们:

javac ./path1/base/Base.java -d ./path1
javac ./path2/sub/Sub.java   -d ./path2  -cp "./path1;./path2"

并且编译成功。但是当我使用以下命令运行 sub.Sub 时:

java sub.Sub -cp "./path1;./path2"

我也遇到了同样的错误

Error: Could not find or load main class sub.Sub

我尝试了多种变体,但似乎都不起作用。有任何想法吗?虽然解决了idea报错的问题,但还是没看懂背后的原理?我希望这个问题可以帮助我弄清楚。我的 jdk 版本是 1.8。提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)