|
|
1
12
您遇到的问题是由于使用的类装入器不同。Commons Net类必须由加载FTP任务的同一类加载程序加载。因为FTP任务是由Ant在启动时加载的,所以需要将Commons Net添加到Ant的类路径中,以便由相同的类加载程序加载。这就是为什么文档提供了4种不同的方法来实现这一点。 我同意它们都不是理想的(CLASSPATH环境变量是最差的)。解决这个问题的一种方法是在项目中提供一个shell脚本,该脚本调用Ant并传递apporpriate-lib参数。然后让人们使用它,而不是直接调用Ant。事实上,您可以将其命名为“ant”,这样它就可以运行,而不是在路径上运行现有的“ant”(只有当前目录在路径上,而不是在其他目录之前,这才有效)。 文档中的第五个选项在理论上很好。他们最终在1.7.0中解决了类加载问题。不幸的是,正如您所提到的,没有人重新安装FTP任务以获取类路径。您可以尝试提交增强请求,但这在短期内没有帮助。 还有一个选择,并不比其他选择好多少。不必确保Commons Net类由加载FTP任务的类加载器加载,您可以确保FTP任务由加载Commons Net类的类加载器加载。为此,您必须从ant安装的“lib”目录中删除ant-commons-lib.jar文件。这意味着FTP任务不会在启动时加载。这就是为什么可选任务被分解成如此多单独的jar,以便可以单独删除它们。将这个JAR文件与Commons Net JAR文件放在一起,以便可以同时加载它。然后你可以做这样的事情(我试过了,它很管用):
但这可能比只使用-lib开关(带或不带包装器脚本)更糟糕。我唯一能想到的另一件事是尝试找到第三方FTP任务来使用,而不是默认任务。 |
|
|
2
6
我有一个解决办法: http://enitsys.sourceforge.net/ant-classloadertask/ 并将其加载到以下位置:
Naw可以使用ant用于其任务的相同类加载器加载类:
或“loader=”项目“” 然后你定义你的任务:
|
|
|
3
4
因此,我成功地为ant-salesforce.jar完成了这项工作,您在尝试执行salesforce工作时得到了ant-salesforce.jar(有趣…) 检查jar中是否有类似以下内容的xml文件:
然后在ant中,给它一个taskdev,从给定的jar中读取该文件,如下所示:
希望这能帮助一些人。 |
|
|
4
1
我想对丹·戴尔表示衷心的感谢。如果没有你对幕后发生的事情的详尽解释,我就不会找到这个解决方案。 |
|
|
5
0
假设libs直接位于您项目的基本目录下,这是否有效
|
|
|
6
0
你的用户都在他们的机器上安装了ant,但是你不能/不想让他们添加FTP jar?您是否可以将ant与您的项目捆绑在一起,使任务调用ant捆绑包,并放置JAR,使其按如下方式工作?
|
|
|
RoseTeq · 流转换为0字节[重复] 2 年前 |
|
|
Barta · 为什么它不更新ui然后运行代码wpf 2 年前 |
|
|
D C · 如何在没有jsch的情况下从SFTP客户端读取文件 3 年前 |
|
|
Farrukh · 无法使用编码“utf-8”解码数据 3 年前 |
|
|
Kate · 在FTP上创建与本地名称相同的文件名 12 年前 |
|
|
iordanis · Windows的替代FTP客户端[已关闭] 13 年前 |
|
|
Friend · Php正在获取目录列表,但如何获取最后修改的日期[重复] 13 年前 |
|
|
petko_stankoski · 修复新连接的超时问题 13 年前 |