[../conf] 路径找不到Scala配置文件

本文讲述了在SpringMVC项目中调用Scala程序时遇到的配置文件找不到的问题及解决方法。问题出现在Scala程序尝试从一个错误的位置加载配置文件,最终通过将配置文件放置在Tomcat的conf目录下得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天需要引用一个Scala程序的jar包,该Scala程序通过沪深行情计算出信号点信息。我需要将信号点存入本地DB。

写好调用Scala的Service后,在单元测试Test中跑没问题,但是一旦启动Tomcat 在SpringMVC的 Task配置的定时任务中调用 或者在@Controller中调用,就会报错:

03-Jul-2017 09:43:37.831 严重 [http-nio-8080-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [] threw exception [Handler processing failed; nested exception is java.lang.ExceptionInInitializerError] with root cause
 org.aiotrade.lib.util.config.ConfigurationException: configDir is defined as [../conf] 
    but the 'development.conf' config file can not be found at [../conf/development.conf],

我打开jar包 发现在其根目录下确实有个development.conf 配置文件。于是拷贝出来,打包到我自己的web工程下。但是我尝试了将该配置文件打包到web程序的任何一级目录,依然报错找不到该配置文件。

这里写图片描述

单步调试进去,看到源码中对于Scala的配置源码:

    private Option configDir$lzycompute() {
        synchronized(this) {
            if(!this.bitmap$0) {
                this.configDir = .MODULE$.apply(scala.Predef..MODULE$.wrapRefArray((Object[])(new String[]{"../conf", "../etc"}))).find(new Serializable() {
                    public static final long serialVersionUID = 0L;

                    public final boolean apply(String x) {
                        File f = new File(x);
                        return f.exists() && f.isDirectory();
                    }
                });
                this.bitmap$0 = true;
            }

            BoxedUnit var10000 = BoxedUnit.UNIT;
        }

        return this.configDir;
    }

该段代码配置了 当在容器中运行时 会去lib库的上上级的conf目录下去找。因此在Tomcat容器中运行时,把development.conf 配置文件放到Tomcat的conf路径下,问题解决。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 继承父项目 --> <parent> <groupId>com.xixi</groupId> <artifactId>dataBase</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> <!-- 父项目 pom 相对路径 --> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>flink-job</artifactId> <!-- 子模块 artifactId --> <name>flink-job</name> <description>Flink Job Module</description> <!-- 子模块依赖(继承父项目版本) --> <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-base</artifactId> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka</artifactId> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension</artifactId> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension-spring6</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> <dependency> <groupId>com.xixi</groupId> <artifactId>common</artifactId> <!-- 与 common 模块的 artifactId 一致 --> </dependency> </dependencies> <build> <plugins> <!-- 编译插件(继承父项目配置) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>17</source> <target>17</target> </configuration> </plugin> <!-- 可选:Spring Boot 插件(若需要本地运行 Flink 作业) --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project><?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.5.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <packaging>pom</packaging> <modules> <!-- 子模块名称,对应目录名(如 flink-job) --> <module>flink-job</module> <module>common</module> <!-- 若有其他子模块(如 canal、service),也需在此声明 --> </modules> <groupId>com.xixi</groupId> <artifactId>dataBase</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dataBase</name> <description>dataBase</description> <properties> <java.version>17</java.version> <flink.version>2.0.0</flink.version> <fastjson.version>2.0.49</fastjson.version> </properties> <dependencyManagement> <dependencies> <!-- Flink --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-base</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka</artifactId> <version>4.0.0-2.0</version> </dependency> <!-- JSON 解析器和生成器 --> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>${fastjson.version}</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension</artifactId> <version>${fastjson.version}</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension-spring6</artifactId> <version>${fastjson.version}</version> </dependency> <!-- kafka --> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.9.1</version> </dependency> <!-- mysql --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.2.0</version> <scope>runtime</scope> </dependency> <!-- MyBatis-Plus 核心 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>3.5.11</version> </dependency> <!-- Spring Kafka --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <!-- Lombok(简化实体类) --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.16.0</version> <!-- 使用最新版本,但注意与Flink版本的兼容性 --> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> </project> 我的pom有什么问题嘛,为什么我的flinkjob不上依赖呢
06-14
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.8/bin:/opt/software/hadoop/hadoop-2.9.2/bin:/opt/software/hadoop/hadoop-2.9.2/sbin:/opt/software/zookeeper-3.9.3/bin:/usr/local/scala/bin:/root/bin:/usr/local/java/jdk1.8/bin:/opt/software/hadoop/hadoop-2.9.2/bin:/opt/software/hadoop/hadoop-2.9.2/sbin:/opt/software/zookeeper-3.9.3/bin:/usr/local/scala/bin:/opt/apache-hive-2.3.7-bin/bin) SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/software/hadoop/hadoop-2.9.2/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </configuration>; expected </property>. at [row,col,system-id]: [9,15,"file:/opt/apache-hive-2.3.7-bin/conf/hive-site.xml"] at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2961) at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2730) at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2605) at org.apache.hadoop.conf.Configuration.get(Configuration.java:1362) at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3904) at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3973) at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:4060) at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:4003) at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:81) at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:65) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:702) at org.apache.hadoop.hi
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值