2

我需要从这个项目 iapg.jade-hs.de/personen/brinkhoff/generator/ 运行一个特定的类

生成器的 jar 文件位于此处:iapg.jade-hs.de/personen/brinkhoff/generator/RunTime21.zip

运行部分没有太多文档。主要假设用户足够先进,知道如何执行此操作。

jar 文件包含以下内容:

META-INF/MANIFEST.MF
spatial/BasicSpatialQuery.class
drawables/DrawableObjects.class
spatialdb/DefaultGeometryFactory.class
spatial/LayerWindowQuery.class
util/Num.class
...
...
...
generator2/ExternalObject.class
generator2/DefaultDataGenerator.class
drawables/DrawableCircle.class
spatial/ExactMatchQuery.class
drawables/DrawableObject.class
generator2/ConstantObjectGenerator.class
drawables/DrawableSpatialSearchTreeObject.class

我需要使用生成器中包含的特定参数运行 generator2/DefaultDataGenerator。

清单文件中只有这个:

Manifest-Version: 1.0

有一个 .bat 文件(假设它是为 Windows 提供的),它具有以下内容:

java -classpath .;generator21.jar generator2.DefaultDataGenerator propOL.txt

问题:我不知道如何实际运行 generator2/DefaultDataGenerator 作为 Java 程序(不是小程序)

我努力了:

1)java -jar generator21.jar这给了我

Failed to load Main-Class manifest attribute from...

2)java -classpath . ; ./generator21.jar generator2.DefaultDataGenerator propOL.txt 这给了我同样的错误,即

Failed to load Main-Class manifest attribute from /home/username/generator/generator21.jar

3) 已尝试根据http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html编辑清单文件,并在其中添加一行额外的内容:

Main-Class: generator2.DefaultDataGenerator 

主要是因为 generator2.DefaultDataGenerator 包的源文件可以在这里找到:iapg.jade-hs.de/personen/brinkhoff/generator/CompleteSource21.zip

显示以下内容:

    /**
     * main entrypoint - starts the part when it is run as an application
     * @param args args[0] = name of the property file
     */
    public static void main(java.lang.String[] args) {
            if ((args.length > 0) && (args[0] != null))
                    propFilename = makeAbsolute(args[0]);
            main ("generator2.DefaultDataGenerator");

但是,当我编辑 Manifest 文件并尝试通过 java -jar jarfile.jar 运行它时,出现以下错误:

     Exception in thread "main" java.lang.NoClassDefFoundError:   
     generator2/DefaultDataGenerator Caused by:
    java.lang.ClassNotFoundException: generator2.DefaultDataGenerator
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    Could not find the main class: generator2.DefaultDataGenerator. 
    Program will exit

请协助。

谢谢

4

1 回答 1

0

这就是问题所在:我需要指定 jar 不是 jar 本身的目录。java -classpath ../generator/ generator2.DefaultDataGenerator 让它运行

于 2013-10-21T16:59:42.057 回答