我正在尝试使用Ant的功能将压缩文件的内容提取到临时文件夹.显然我在这里犯了一个或多个错误的东西,但它们碰巧是逃避我,因为网络上这类代码的例子似乎很少而且过时了:
//...
public static void extract(File src, File dest){
String path = src.getPath();
String ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase();
Expander expander = null;
if(ext.equals("tar")) {
expander = new Expander("untar","untar");
} else if(ext.equals("jar")) {
expander = new Expander("unzip","unzip");
} else if(ext.equals("zip")) {
expander = new Expander("unzip","unzip");
} else {
// ...
}
expander.setSrc(src);
expander.setDest(dest);
expander.execute();
}
//...
Run Code Online (Sandbox Code Playgroud)
以上内容基于:http://www.jajakarta.org/ant/ant-1.6.1/docs/en/manual/antexternal.html
扩展器类:
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.taskdefs.Expand;
class Expander extends Expand{
public Expander(String taskType, String taskName){
this.setProject(new Project());
this.getProject().init();
this.setOwningTarget(new Target());
this.setTaskType(taskType);
this.setTaskName(taskName);
}
}
Run Code Online (Sandbox Code Playgroud)
在Expander构造函数中,我在运行时获得以下内容:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/AntMain
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.tools.ant.Project.initProperties(Project.java:313)
at org.apache.tools.ant.Project.init(Project.java:300)
at Expander.<init>(Expander.java:8)
at Main.extract(Main.java:151)
at Main.getDeliverableFiles(Main.java:130)
at Main.main(Main.java:36)
caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.AntMain
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 18 more
Run Code Online (Sandbox Code Playgroud)
在蚂蚁发射罐子是从您的Java程序的类路径中失踪.
我使用Maven的搜索网站查找包含缺失类的jar:
http://search.maven.org/#advancedsearch|gav
而不是在Java中使用这种逻辑,为什么不使用Groovy?ANT支持已融入语言:
def ant = new AntBuilder()
ant.unzip(src:"example.zip", dest:"exampleDir")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4059 次 |
| 最近记录: |