我是骆驼的新手。我阅读了基础知识,并设法完成了简单的文件到文件路由。当我尝试从文件到sftp。失败了。
为了进行测试,我将Windows 10作为主机操作系统,将Mining Linux作为来宾操作系统。我可以通过sftp客户端从win访问linux。因此,我与来宾之间的访问没有问题。我尝试了以下代码:-
public class App
{
public static void main(String[]args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
try {
camelContext.addRoutes(new FtpRouteBuilder());
camelContext.start();
Thread.sleep(200000);
// do other stuff...
}catch (Exception e){
System.out.printf("ex: "+e.getMessage());
}
finally {
camelContext.stop();
}
}
}
public class FtpRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
try{
from("file:c:/temp/input/")
.to("sftp://sftpuser@192.168.10.54/?password=dev&passiveMode=true");
}catch (Exception ex){
System.out.printf("ex: "+ex.getMessage());
}
}
}
当我尝试此代码时。我收到以下异常:-
无法在以下位置创建路由route1:>>> 到[sftp://sftpuser@192.168.10.54/?password = dev&passiveMode = true] <<< 在路由中:Route(route1)[[From [file:c:/ temp / input /]]-> [To [sftp:// sftp ...,因为无法解析端点: sftp://sftpuser@192.168.10.54/?passiveMode = true&password = dev是由于: 未找到使用方案的组件:sftp18 / 11/24 17:50:30 INFO impl.DefaultCamelContext:Apache Camel 2.15.1(CamelContext:camel-1) 正常运行时间0.296秒
怎么了?如何解决?
答案 0 :(得分:1)
感谢ernest_k指出缺少的库。我添加了:-
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ftp</artifactId>
<version>2.15.1</version>
</dependency>
public class FtpRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
try{
from("file:c:/temp/input/")
..streamCaching()
.to("sftp://sftpuser@192.168.10.54:/sftpuser/?password=dev");
}catch (Exception ex){
System.out.printf("ex: "+ex.getMessage());
}
}
}
它是固定的,主要要注意sftp URI。有用。