我将以下 pom.xml 设置为使用 Camel 3.14.0:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.apps</groupId>
<artifactId>MyApp</artifactId>
<version>1.0.0</version>
<name>MyApp Camel component</name>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bom</artifactId>
<version>3.14.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csv</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sql</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
</dependency>
<!-- DB dependencies -->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.6.1</version>
<scope>system</scope>
<systemPath>D:\Drivers\hsqldb-2.6.1-jdk8.jar</systemPath>
</dependency>
</dependencies>
</project>
然后我在 Windows 中有这个命令行来收集依赖项:
C:\Users\Public\apache-maven-3.2.5\bin\mvn -f pom.xml dependency:copy-dependencies
当我运行它时,我会在目标文件夹(../build/target/dependency)中获得所有 jar。
然后我得到其他run.bat文件,如下所示:
set CLASSPATH=../build/target/dependency/*;../config/
java -classpath "%CLASSPATH%" org.apache.camel.spring.Main
但是当我运行它时,我得到一个错误,说它找不到主类。该类是以前用例(Camel 2.10.6)中使用的类,它运行良好。您能否建议在这里参考什么是正确的课程?
编辑 1:我在文档中发现 Main 现在在 org.apache.camel.main 中,所以我在 run.bat 中配置了它,它似乎正在运行。但是现在它显示了以下内容,奇怪的是它停止从 context.xml 中配置的路径中选择文件。有任何想法吗?
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
编辑 2:我查看了错误,发现我需要包含依赖项
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
它似乎仍然有效(关于 slf4 的消息消失了)但仍然不会从路径中选择文件。
现在,我决定迁移到最后一个 LTS 版本的原因是因为我需要使用一个组件属性,该组件属性仅在较新版本的 Camel 中可用,而不是我一直在使用的版本。所以我决定试一试最新版本,但现在我遇到了错误,说它找不到课程。
我过去在某种程度上使用过 Camel,但只是基于其他人提供的示例,从来没有从头开始,所以我根本不是专家,不幸的是我需要尽快解决这个问题。我想最简单的方法是使用 java bean,但我不是 java 开发人员,所以我认为使用 Spring XML DSL 可能没问题。我正在使用 java 1.8.0_92。
Camel 文档似乎没有像 spring xml 那样提供如此多的细节,所以任何帮助都将不胜感激。