当前位置: 首页 > 知识库问答 >
问题:

如何在不制作包的情况下运行具有多个类文件的java程序?[副本]

相化
2023-03-14

在获得第二个类文件之前,我使用命令“javac-cp”./lib/*:lib/*“src/aaa.java”编译,并使用命令“java-classpath”lib/*:lib/*“src/aaa.java data/*”运行程序。我在这里已经很困惑了。如果我没有将“.java”放入run命令中,则消息为:

"Error: Could not find or load main class src.AAA
 Caused by: java.lang.ClassNotFoundException: src.AAA"

会出现。为什么会这样?

添加第二个类文件之后。我使用命令“javac-cp”./lib/*:lib/*“src/aaa.java src/mergerhtml.java”编译程序,没有发现错误。但是,当我使用命令“java-classpath”lib/*:lib/*“src/aaa.java data/*”时,产生的错误如下:

src/AAA.java:441: error: cannot find symbol
    MergerHTML mHTML = new MergerHTML();
    ^
    symbol:   class MergerHTML
    location: class AAA
public class AAA {
   ....
   public static void main(final String[] args) throws Exception {

       MergerHTML mHTML = new MergerHTML();
       mHTML.print();

   }
}
public class MergerHTML{
    public void print(){
        System.out.println("hiiiiii");
    }
}

共有1个答案

吕永嘉
2023-03-14

而不是

java -classpath "lib/*:lib/*" src/AAA.java data/*

您需要指定要执行的编译类(而不是它来自的源代码),在类路径中不需要lib/*两次,但需要当前文件夹(实际上是包含编译类的文件夹,在本例中是当前文件夹)。例如(在Windows上将:更改为),

java -classpath "lib/*:." AAA data/*

注意:更传统的放置类的地方是bin文件夹(您可以随意命名它,但是当类都收集在一个“干净”的树中时,打包会更方便)。所以,就像

mkdir bin
javac -cp "lib/*" -d bin src/AAA.java src/MergerHTML.java
java -classpath "lib/*:bin" AAA data/*
java -classpath "lib/*;bin" AAA data/*
 类似资料:
  • 我想参加一场比赛。Java一直是我编写游戏的工具,所以很自然我会想在这个游戏中使用它。问题是,它不能需要其他软件。我相信这包括Java。那么,有没有办法在某种exe文件中包含java?或者以其他方式包括它?资产不必包含在内,但总体大小必须小于1GB,因此我需要足够的空间来存放实际的游戏和资产。

  • 问题内容: 我想在Eclipse中编译我的Java程序,但不想运行它。我不知道该怎么做。 如何在不运行Eclipse的情况下将Java程序编译为文件? 问题答案: 您可以在项目菜单中自动取消选中构建,然后通过按Ctrl + B或单击打印机图标右侧出现的图标手动构建。

  • 问题内容: 有人建议可以怎一个JAVA程序运行不写一个主要方法.. 例如: 不使用类中的公共静态void main(String arg []),如何在控制台上打印以上行。 问题答案: 直到JDK6,您都可以使用静态初始化程序块来打印消息。这样,一旦您的班级被加载,消息就会被打印出来。然后,技巧就变成了使用另一个程序来加载您的类。 当然,您可以按如下方式运行程序,您将看到消息;但是,该命令也会失败

  • 我需要为我的项目生成序列图。 我已经创建了类、具有适当签名的方法、从一个类到另一个类的方法调用等,但是,由于逻辑还没有实现,我无法真正运行web应用程序来通过跟踪获得序列图。 语言:Java IDE:Eclipse

  • 问题内容: 是否可以在不使用序列化的情况下对Java对象进行深层复制/克隆?如果是这样,那又如何? 问题答案: 您可以使用制作对象的深层副本。当您无法(或不想)使您的类可序列化时,这真的很有用。用法很简单:

  • 有时运行docker映像会失败,因此ssh’ing到容器中不是一个选项。在这种情况下,我们如何查看容器中的内容? 有一个存在的问题,但错误地标记为重复。如何浏览docker图像而不运行它?