繁体   English   中英

在Windows命令行上的jar文件的子包中运行类

[英]Run a class in a sub package in a jar file on Windows command line

我从eclipse中导出了一个jar文件,在jar文件中有Java类文件的各种包和子包。

我想在Windows的命令行中运行这些嵌套类文件之一。

该类有一个main,我正在使用以下代码尝试运行它,

java -classpath .;./example.jar example

请注意,示例是类以及jar的名称。

我也曾尝试阐明课程的完整路径

java -classpath .;./example.jar the.whole.path.example

如何运行示例类?

编辑:

好的,这有点愚蠢,完整路径不正确。 我检查了无数次,但是直到我回到它时,我才注意到错误。

没有看到您的任何代码或任何输出(提示,提示),很难说是怎么回事,但这对我有用:

$ cat x/y/z/A.java
package x.y.z;

public class A
{
    public static void main(String args[]) throws Exception
    {
        System.out.println("here in A");
    }
}
$ javac x/y/z/A.java
$ jar cvf a.jar x/y/z/A.class
added manifest
adding: x/y/z/A.class(in = 459) (out= 311)(deflated 32%)
$ java -classpath a.jar x.y.z.A
here in A

并且如果发帖人或以后会读到此书的人对Unix不熟悉,以$开头的行是我在shell中键入的命令,其他所有内容都从这些命令输出。 Eclipse将为您处理前三个问题,然后最后一个java -classpath a.jar xyzA是执行xyzA类中的main方法的命令。

仅运行java -cp example.jar the.whole.path.example应该可以解决问题。 如果不是,则JAR文件中的内容有误。 类名必须是完全限定的(带有包名),并且指定的类必须具有正确的main方法:

public static void main(String[] args) {

}

检查您的假设是否正确。 显示罐子的结构并将其与您尝试运行的罐子进行比较:

jar tf example.jar

如果罐子中包含很多条目,则可能要grep /查找相关的类:

jar tf  example.jar | find /i "Example"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM