长Java类路径解决方案

时间:2017-08-24 10:36:48

标签: java classpath

我试图找出解决Windows中长类路径问题的方法。虽然我在Linux中(这就是为什么下面的例子是unix格式),最终用户可能在linux中,我知道问题发生了。

我的应用程序下载并创建一个需要运行的jar和文件的字符串。它比生成一个字符串,如:

java -classpath path_to_file1:path_to_file2:path_to_file3 jvm_args MainClass

运行应用程序。这在Linux中运行良好,但它在Windows中爆炸,因为类路径太长了。

我理解的问题,我尝试过提出的解决方案:How to set a long Java classpath in Windows?

但是由于找不到MainClass的路径,所以我没有成功(它在类路径上!)。这是我做的:

我有以下文件夹结构:

[root]
├── classes
│   └── com
│       └── tst
│           ├── CPTest1.class
│           ├── CPTest2.class
│           └── CPTest3.class
└── com
    └── tst
        ├── CPTest1.java
        ├── CPTest2.java
        └── CPTest3.java

通过调用:

来编译类
javac -d classes -cp . com/tst/*

以下是文件:

CPTest1.java

package com.tst;

public class CPTest1{
    public static void main(String[] args) {
        System.out.println ("Run CPTest1.main()");
    }
}

CPTest2.java

package com.tst;

public class CPTest2 {
    public static void main(String[] args) {
        System.out.println ("Run CPTest2.main()");
        CPTest1 cpt1 = new CPTest1();
    }
}

CPTest3.java

package com.tst;

public class CPTest3 {
    public static void main(String[] args) {
        System.out.println ("Run CPTest3.main()");
        CPTest1 cpt1 = new CPTest1();
        CPTest2 cpt2 = new CPTest2();
    }
}

现在如果我在 [root] 并运行:

java -cp classes com.tst.CPTest3

我看到了正确的输出。 但是,如果我首先生成“路径jar”作为我指出的解决方案建议,通过创建一个文件: cpTest.txt (我用相对和完整的路径尝试了这个)

Class-Path: classes

使用以下方法创建jar:

jar -cvfm cp.jar cpTest.txt

而不是最终试图运行:

java -cp cp.jar com.tst.CPTest3

我得到的是没有找到CPTest3类的错误:

Error: Could not find or load main class com.tst.CPTest3

我错过了什么? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

使用java -jar并将所有相关的JAR文件放入主JAR文件的类路径清单条目中。

相关问题