我需要从这个项目 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
请协助。
谢谢