我正在开发一个遗留应用程序,它通过使用包org.apache.tools.ant.taskdefs使用ant任务来使用Javadoc生成。在那里,我需要通过maven给出的类路径。这个类路径主要在maven本地存储库中有jar路径。
Javadoc javadoc = new Javadoc();
javadoc.setUseExternalFile(true);
javadoc.setProject(proj);
javadoc.setClasspath(new Path(proj, classpath));问题是,这个类路径足够长,因此不允许在Windows上执行,这会导致以下错误。
enterJavadoc failed: java.io.IOException: Cannot run program "C:\jdk1.8.0_144\bin\javadoc.exe": CreateProcess error=206, The filename or extension is too long code here对于这个问题,我所做的就是创建一个pathing,它在其清单文件中包含了长类路径。因此,我将这个jar文件添加为Javadoc任务的类路径。我在ant中使用ManifestClassPath任务为我的长类路径中的jars生成相对路径。
ManifestClassPath mc = new ManifestClassPath();
mc.setProject(proj);
mc.addClassPath(new Path(proj, classPath));
mc.setJarFile(new File(pathingJar));
mc.setProperty("classpath");
mc.setMaxParentLevels(20);
mc.execute();
Jar jar = new Jar();
Manifest manifest = new Manifest();
Manifest.Attribute attribute = new Manifest.Attribute();
attribute.setName("Class-Path");
attribute.setValue(proj.getProperty("classpath"));
manifest.addConfiguredAttribute(attribute);
jar.addConfiguredManifest(manifest);
jar.setDestFile(new File(pathingJar));
jar.setProject(proj);
jar.execute();
javadoc.setClasspath(new Path(proj, pathingJar));此解决方案可以工作,直到我在maven本地存储库所在的同一驱动器中开发该解决方案。但是maven本地存储库位于不同的驱动器中,因为它不能为不同的驱动器生成相对路径,所以会失败。然后,我尝试使用文件协议来处理类路径,如下所示
Class-Path: file:///C:/mvn_repo/... file:///C:/mvn_repo/... ...由于Javadoc任务正在失败,此解决方案似乎不起作用。有没有其他方法尝试使用粘贴jar来修复这个长类路径问题?
发布于 2020-07-02 13:55:26
正如“侯爵”提到的,你不能。
报表中的
类路径条目是相对URL。
无论如何,您可以使用带有文件夹链接的解决方案。在pathing的驱动器上,您可以创建一个指向maven目录的文件夹链接。文件夹链接可以指向另一个驱动器。
mklink /J "mvn_repo_link" "C:\mvn_repo". 然后可以通过mvn_repo_link子目录使用相对路径。
https://stackoverflow.com/questions/62573605
复制相似问题