maven打包jar文件读取jar内部配置文件和jar外部配置文件demo

本文演示了如何在Maven打包的jar应用程序中读取内部和外部配置文件,提供了详细的步骤和实例,旨在帮助开发者理解在不同场景下获取配置文件的方法。
摘要由CSDN通过智能技术生成
package www.hub;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map.Entry;
import java.util.Properties;

public class PropertyDemo {

	public static void main(String[] args) {
		
		Properties p = new Properties();
		try {
			//读取jar内部文件路径
			p.load(PropertyDemo.class.getResourceAsStream("test.properties"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (Entry<Object, Object> kv : p.entrySet()) {
			System.out.println(kv.getKey() + "-" + kv.getValue());
		}
		
		//读取jar外部文件下面输出的是工程目录所在的路径D/workspace/tt
		System.out.println(System.getProperty("user.dir"));
		String filePath = System.getProperty("user.dir") + "/test.properties";
		InputStream in = null;
		try {
			in = new BufferedInputSt
好的,以下是一个 Flink Table 读取 Kafka 多个表的示例代码,使用的是 Flink 1.17.0 版本,并且可以通过 Maven 构建: ```java import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.EnvironmentSettings; import org.apache.flink.table.api.Table; import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; import org.apache.flink.table.descriptors.Kafka; import org.apache.flink.table.descriptors.Schema; import org.apache.flink.table.descriptors.FormatDescriptor; import org.apache.flink.table.descriptors.Json; import org.apache.flink.table.descriptors.ConnectorDescriptor; public class FlinkKafkaTableDemo { public static void main(String[] args) throws Exception { // 创建 Flink Streaming 执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); // 创建 Flink Table 执行环境 EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, settings); // 定义 Kafka 连接器 ConnectorDescriptor kafkaConnector = new Kafka() .version("universal") .topic("topic-name") .startFromLatest() .property("bootstrap.servers", "localhost:9092") .property("group.id", "group-name"); // 定义 Schema Schema schema = new Schema() .field("field1", "VARCHAR") .field("field2", "BIGINT") .field("field3", "VARCHAR"); // 定义格式化器 FormatDescriptor format = new Json().failOnMissingField(true); // 注册 Kafka 连接器和 Schema tableEnv .connect(kafkaConnector) .withFormat(format) .withSchema(schema) .createTemporaryTable("table1"); // 注册另一个 Kafka 连接器和 Schema tableEnv .connect(kafkaConnector) .withFormat(format) .withSchema(schema) .createTemporaryTable("table2"); // 按照指定条件连接多个表 Table result = tableEnv.sqlQuery("SELECT t1.field1, t1.field2, t2.field3 FROM table1 t1 JOIN table2 t2 ON t1.field1 = t2.field1"); // 输出结果 result.printSchema(); result.execute().print(); // 执行任务 env.execute("Flink Kafka Table Demo"); } } ``` 你可以将这个代码保存为 `FlinkKafkaTableDemo.java` 文件,并在同一目录下创建一个 `pom.xml` 文件,内容如下: ```xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>flink-kafka-table-demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.12</artifactId> <version>1.17.0</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge_2.12</artifactId> <version>1.17.0</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.12</artifactId> <version>1.17.0</version> </dependency> </dependencies> </project> ``` 然后,在命令行中进入到该目录,并执行以下命令进行编译和打包: ``` mvn package ``` 编译完成后,在 `target` 目录下会生成一个名为 `flink-kafka-table-demo-1.0-SNAPSHOT.jar` 的可执行 JAR 文件。你可以使用以下命令在 Flink 中运行它: ``` ./bin/flink run flink-kafka-table-demo-1.0-SNAPSHOT.jar ``` 注意,以上命令中的 `./bin/flink` 可能需要根据你的实际情况调整。另外,示例中的 Kafka 版本为 `universal`,因此可以适用于不同版本的 Kafka。如果你的 Kafka 版本与本示例不同,请根据实际情况调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值