Java 编译embbedgrizzly-Jersey应用程序can';我找不到泽西岛的资源

Java 编译embbedgrizzly-Jersey应用程序can';我找不到泽西岛的资源,java,intellij-idea,jersey,gradle,grizzly,Java,Intellij Idea,Jersey,Gradle,Grizzly,我正在开发一个安装在Jersey(v2)框架上的应用程序,该框架带有一个增强的Grizzly服务器 在IntelliJ Idea Community 12中编译和运行非常完美,但是当我使用Gradle编译到“.jar”时,对应用程序的每个http调用都返回404 我可以告诉大家资源类扫描不起作用,因为我有一个模型类,它在启动时返回一个警告,我没有在运行JAR时发出警告,但我确实从Idea运行应用程序 以下是我的项目结构(简化为相关内容): 以下是我在Main.java中初始化服务器的方式: pa

我正在开发一个安装在Jersey(v2)框架上的应用程序,该框架带有一个增强的Grizzly服务器

在IntelliJ Idea Community 12中编译和运行非常完美,但是当我使用Gradle编译到“.jar”时,对应用程序的每个http调用都返回404

我可以告诉大家资源类扫描不起作用,因为我有一个模型类,它在启动时返回一个警告,我没有在运行JAR时发出警告,但我确实从Idea运行应用程序

以下是我的项目结构(简化为相关内容):

以下是我在Main.java中初始化服务器的方式:

package wci.api.main;

// Some imports...

public class Main {
    public static final String BASE_URI = "http://0.0.0.0:4747/";

    public static void main(String[] args) throws IOException {
        // Some irrelevant code...

        final ResourceConfig rc = new ResourceConfig();

        rc.packages("wci.api.resource");                   // This does not work
        rc.register(wci.api.main.CorsSupportFilter.class); // This works

        final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);

        // Some more irrelevant code...
    }
}
这是我的身材。格雷德尔:

    apply plugin: 'java'

    repositories{
        mavenCentral()
    }

    dependencies{
        <<< Dependencies >>>

    }

    jar{
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
        manifest { attributes 'Main-Class': 'wci.api.main.Main' }
    }
我就是这样运行的:

java -jar api.jar
少了什么


提前感谢。

我可以发现一些问题:

  • 资源应该进入
    src/main/Resources
    ,而不是
    src/main/java
    。(否则您必须重新配置
    sourceset.main.resources.srcDirs
  • configurations.compile.collect{…}
    应该是
    configurations.runtime.collect{…}

与手动创建胖Jar不同,我建议使用Gradle的
应用程序
插件。

我还尝试从IntelliJ Idea编译Jar,结果与使用Gradle编译相同。我发现运行Idea的命令行与使用Gradle构建的Jar一起工作。它添加了一个巨大的“-classpath”。我试着用“configurations.compile.collect{it.getName()}.join(',')”在build.gradle上添加它,我在清单上看到了它,但据我所知,它们不是相同的依赖项。有关此的详细信息。它可以与“gradle run”一起正常工作,但我认为部署时拥有所有代码和构建工具来运行应用程序是不可接受的。我会尝试一下,然后再与您联系。谢谢。没有:(,不起作用。我将java重命名为resources,并在Gradle中配置了应用程序插件。在使用distZip编译应用程序、解包并运行“bin/api”后,我得到了相同的结果。同样,除了Jersey之外,所有功能都可以正常工作。我找不到rc.packages()定义的内容。
gradle build
java -jar api.jar