java - 运行java代码,它使用其他包中的类

标签 java

我有以下目录布局: Program文件夹包含java、class和pack文件夹,我当前的位置是program/java,其中包含a.java和b.java文件。最初类和包不包含任何内容。

b.java

package comm.domm;
public class b
{
    public void bFu()
    {
        System.out.println("b function");
    }
}

a.java

package com.dom;
import comm.domm.*;
class a
{
    public static void main(String args[])
    {
        (new b()).bFu();
        System.out.println("Utsab");
    }
}

现在,从program/java发出以下命令

javac -d ../pack b.java
javac -cp ../pack -d ../class a.java

这会在 pack 下创建 comm/domm 并将 b.class 放置在 program/pack/comm/domm 中 并在 class 下创建 com/dom 并将 a.class 放入 program/class/com/dom

现在从我发出的同一当前目录,

java -cp ../class;../pack com.dom.a

这不起作用,它可以找到a.class,但不能找到b.class(b.class是a.class需要的,如源代码中所述),但是在编译a.java时使用

javac -cp ../pack -d ../class a.java

它可以找到b.class并生成a.class,那么为什么我尝试运行a.class时找不到b.class?如何才能找到它? b.class在编译时找到,但在运行时找不到,为什么?

最佳答案

除非这是一个拼写错误

javac -cp ../pack -d ../class b.java

您根本没有编译过a.java。如果你有

javac -cp ../pack -d ../class a.java

相反,它对我有用并打印

b function
Utsab

正如预期的那样。

关于java - 运行java代码,它使用其他包中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984761/

相关文章:

SQL 逻辑中的 Java 插入或更新

java - 使用子级中定义的字段调用父级构造函数的辅助方法

java - bufferedwriter close() 和flush() 方法的内存效应是什么?

java - Pi 与 Nilakantha 方法

Java效率: Object Assignment & Method Call vs.内联方法调用

使用下一代插件的 java 小程序

java - 如何将按钮对齐到选项卡内的中心?

java - 使用 GAE 生成 API(Google Cloud Endpoint)时出错

java - 如何仅在使用android中的textwatcher从edittext完成编辑后才将值添加到hashmap

java - 由以下原因引起:org.gradle.process.internal.ExecException:Proceorg.gradle.api.tasks.TaskExecutionException:任务 ':service:bootRun'的执行失败