Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 奇怪的Maven空指针_Java_Intellij Idea_Maven 3_Executable Jar_Artifact - Fatal编程技术网

Java 奇怪的Maven空指针

Java 奇怪的Maven空指针,java,intellij-idea,maven-3,executable-jar,artifact,Java,Intellij Idea,Maven 3,Executable Jar,Artifact,我从一开始问起就修改了这个问题。请参阅更新1部分,特别是最后的更新2部分。 我正在构建一个具有很多依赖项的大型JavaFX应用程序。我正在使用IntelliJ来完成这项工作,现在正处于部署阶段。我正在使用IntelliJ自己关于工件的教程来构建一个可执行jar。教程可以在中看到 我已经构建了我的可执行jar,它正在正常工作,但有一点需要注意: 我必须为可执行jar文件手动模拟IntelliJ项目的目录结构,以找到程序正常运行所需的资源 这就是我的问题所在:IntelliJ不应该在工件中包含这些文

我从一开始问起就修改了这个问题。请参阅更新1部分,特别是最后的更新2部分。

我正在构建一个具有很多依赖项的大型JavaFX应用程序。我正在使用IntelliJ来完成这项工作,现在正处于部署阶段。我正在使用IntelliJ自己关于工件的教程来构建一个可执行jar。教程可以在中看到

我已经构建了我的可执行jar,它正在正常工作,但有一点需要注意:

我必须为可执行jar文件手动模拟IntelliJ项目的目录结构,以找到程序正常运行所需的资源

这就是我的问题所在:IntelliJ不应该在工件中包含这些文件,这样它就可以自己运行了吗

我在IntelliJ中的目录结构如下所示:

Project root
  .idea
  .out
  .src
    .main
      .java
        .com
          .myCompany
            .package-with-classes1
              .class1 ... N
            .package-with-classes2
              .class1 ... N
                .package-with-files
                  .file1.someExtension
                  .file2.someExtension
            .other-package-classes
            .and-so-on
当我在projectstructure-Artifacts-Output布局下构建工件时,我会手动添加目录结构,如上图所示,然后将文件放在它们所属的位置

根据我上面的问题,我希望这些文件自动包含在可执行jar文件中

更新1:将Maven添加到项目中

由于这个原因,我现在已经在我的项目中实现了Maven。我在pom.xml文件中添加了很多外部依赖项,如下所示:

<dependency>
    <groupId>some.group.id</groupId>
    <artifactId>some-artifact-id</artifactId>
    <scope>system</scope>
    <version>1.0.0</version>
    <systemPath>${basedir}\path\to\jar\jarfile.jar</systemPath
</dependency>

some.group.id
某个工件id
系统
1.0.0

${basedir}\path\to\jar\jarfile.jar第一个问题写得很好。做得好!我非常确定IntelliJ应该允许您明确地说明部署的工件中包含哪些资源。你在问题中链接的指南是否没有指导你这样做?@RannLifshitz不确定你是否在讽刺,但……谢谢。我会再看一遍教程。我从不讽刺新的SO用户。这里有太多苛刻的用户,他们的行为如此恶劣,我个人很讨厌。我真的很好奇如何通过IntelliJ的部署来打包您的资源(我更熟悉Maven是如何做到这一点的)。我希望指南能说明这是如何做到的,但事实并非如此——IntelliJ似乎应该更新他们的指南。@RannLifshitz在这种情况下,我道歉!谢谢你迄今为止的帮助。是的,这在教程中似乎并不明显,但我会仔细检查,以确保我没有错过任何东西。
<dependency>
    <groupId>some.group.id</groupId>
    <artifactId>some-artifact-id</artifactId>
    <version>some.version.number</version>
</dependency>
 <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <configuration>
         <archive>
             <manifest>
                 <mainClass>com.myCompany.myMainClass</mainClass>
             </manifest>
         </archive>
         <descriptorRefs>
             <descriptorRef>jar-with-dependencies</descriptorRef>
         </descriptorRefs>
     </configuration>
     <executions>
         <execution>
             <id>make-assembly</id>
             <phase>package</phase>
             <goals>
                 <goal>single</goal>
             </goals>
         </execution>
     </executions>
 </plugin>