当前位置: 首页 > 面试题库 >

找到多个defaults.yaml资源

何麻雀
2023-03-14
问题内容

当我尝试提交拓扑时,我发现了这个

Exception in thread "main" java.lang.RuntimeException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar.
at backtype.storm.utils.Utils.findAndReadConfigFile(Utils.java:115)
at backtype.storm.utils.Utils.readDefaultConfig(Utils.java:135)
at backtype.storm.utils.Utils.readStormConfig(Utils.java:155)
at backtype.storm.StormSubmitter.submitTopology(StormSubmitter.java:61)
at backtype.storm.StormSubmitter.submitTopology(StormSubmitter.java:40)
at trident.myproject.main(myproject.java:288)

但是这个错误在pom.xml中更新后出现了

<scope>compile</scope> instead of <scope>provided</scope>

那是因为我是一个错误

An exception occured while executing the Java class. storm/trident/state/StateFactory

这是pom文件

<plugins>
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
                <manifest>
                    <mainClass>trident.myproject</mainClass>
                    <!-- <mainClass>crawler.Crawler</mainClass> -->
                </manifest>
            </archive>
        </configuration>

pom文件的第2部分

<executions>
    <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal>
        </goals>
    </execution>
</executions>

pom文件的第3部分

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>
</plugins>

问题答案:

在内部LocalCluster或通过远程运行拓扑StormSubmitter(这是项目中的默认设置)存在根本区别。

的范围storm- core设置为<scope>provided</scope>默认值,因为这些类文件仍然在群​​集中可用。provided告诉Maven,这些类一定不能包含在jar汇编文件中,从而减小了jar的大小。此外,如果文件被多次提供,则可以避免冲突-
default.yaml如果将范围更改为,则会发生冲突compile。在这种情况下,来自的所有文件storm- core都打包到您中jar并提交给集群。Storm在defaults.yaml本地和群集中的本地计算机上(即本地在工作计算机上)找到文件jar。因此,Storm不知道使用哪个,并引发错误。

但是,provided如果您也在本地运行,则不包括那些类文件。当然,在本地这些文件不是自动可用的,但是在启动本地JVM时必须包含在
CLASSPATH中 。由于providedstorm-core您排除文件得到ClassNotFound异常。

作为每次要提交到不同环境时更改范围的一种替代方法,可以将范围设置为,compile并在maven-jar-plugin设置中明确包含拓扑Main /
Bolt / Spout类。此明确包含将自动从jar中排除所有其他文件,即,从中排除所有文件storm-core

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.6</version>

  <executions>
    <execution>
      <id>MyTopology</id>
      <phase>package</phase>
      <goals>
        <goal>jar</goal>
      </goals>
      <configuration>
        <includes>
          <include>my/topology/package/**/*.class</include>
        </includes>
      </configuration>
    </execution>
  </executions>
</plugin>


 类似资料:
  • 我正在做一个项目,编译并运行我的IDE工作正常。所有资源都找到了,它正常工作。然而,当我构建我的. jar时,它能够找到一些资源,但不是全部。我的项目结构看起来是这样的: 当我运行jar文件时,它能够找到图像并使用它们,但是当我尝试访问html文件时,它不会打开。下面是jar的项目结构; 我以前从未处理过jar文件,所以这似乎是我犯的一个非常明显的错误。感谢您的帮助,谢谢! 编辑:访问找不到的文件

  • 我正在使用ADT 我的styles.xml:

  • 我正在libs文件夹中使用Android-support-v7-appcompat.jar lib 我的目标是使我的应用程序兼容2.3或以上

  • 问题内容: 出了点问题,这非常令人沮丧。我在Velocity的主页上读到,当我运行webapp时,应设置一些属性。我已经做到了,但是无论我做什么,我都会遇到相同的错误。 这是我设置道具并使用速度的地方 这些文件当然保存在/ WEB-INF / mailtemplates /中。 如果我用这个我得到这个错误: 感谢您的时间:) 问题答案: 您正在使用Webapp资源加载器,该资源加载器适用于Velo

  • 当我将Android Studio更新到最新版本后,我试图构建我的项目时,我遇到了这个错误。我得到以下错误: C:\users\yacn.gradle\caches\transforms-2\files-2.1\5502c0022567bdcff063e0fb4352b137\folioReader-0.3.3\res\layout\progress_dialog.xml:10:aapt:错误:资

  • 我正在对这些注释使用基本集成测试: 运行测试时,出现以下错误: 该错误是由以下注释引起的:SpringBootTest和DataMongoTest,包括BootstrapWith,如下所示: 我需要继续使用SpringBootTest进行SpringBootTest。WebEnvironment。RANDOM\u端口,但我还需要来自DataMongoTest的嵌入式mongodb 有什么建议吗?