Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Neo4j 嵌入式Jetty无法访问Spring Boot uber jar中jar中的静态web内容_Neo4j_Embedded Jetty_Spring Boot_Uberjar - Fatal编程技术网

Neo4j 嵌入式Jetty无法访问Spring Boot uber jar中jar中的静态web内容

Neo4j 嵌入式Jetty无法访问Spring Boot uber jar中jar中的静态web内容,neo4j,embedded-jetty,spring-boot,uberjar,Neo4j,Embedded Jetty,Spring Boot,Uberjar,我正在运行一个带有底层Neo4j数据库的Spring Boot web应用程序。为了能够查看Neo4j浏览器(直接在数据库上查看web),Neo4j web服务器使用以下配置嵌入到应用程序中 @Bean(initMethod = "start", destroyMethod = "stop") public WrappingNeoServerBootstrapper neo4jWebServer() { return new WrappingNeoServerBootstrapper((

我正在运行一个带有底层Neo4j数据库的Spring Boot web应用程序。为了能够查看Neo4j浏览器(直接在数据库上查看web),Neo4j web服务器使用以下配置嵌入到应用程序中

@Bean(initMethod = "start", destroyMethod = "stop")
public WrappingNeoServerBootstrapper neo4jWebServer() {
    return new WrappingNeoServerBootstrapper((GraphDatabaseAPI) graphDatabaseService());
}
并通过在maven pom中包含以下内容:

<dependency>
    <groupId>org.neo4j.app</groupId>
    <artifactId>neo4j-server</artifactId>
    <classifier>static-web</classifier>
    <version>2.0.2</version>
</dependency>
Jetty无法匹配其资源列表中的任何内容,因为它正在查找名为
/lib/neo4j-browser-2.0.2.jar的资源/浏览器/
,因为代码正在查找第一个
/

我将为此提交一个Jetty bug,并建议他们在代码中使用
String.lastIndexOf(“!/”)
,这将解决问题

与此同时,除了生产我们的oun标准maven组件外,有人对我如何在Spring Boot uber jar中实现这一点有什么建议吗


非常感谢。

Spring Boot uber jar使用一些特殊技术,允许从嵌套jar加载内容。Jetty(完全可以理解)假设jar URL只包含一个

您最简单的解决方案可能是切换到。这将创建一个uber jar,方法是在将所有依赖项重新打包到单个jar中之前先将它们解包


如果您使用的是SpringBoot+Maven,则在

中建议了一些其他替代方案,您可以添加以下内容:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <requiresUnpack>
            <dependency>
                <groupId>org.neo4j.app</groupId>
                <artifactId>neo4j-browser</artifactId>
            </dependency>
        </requiresUnpack>
    </configuration>
    <executions>
       ...
</plugin>

org.springframework.boot

它与Tomcat一起工作吗?我没有尝试过使用Tomcat,因为
社区NeoServer
明确使用Jetty 9 web服务器:ref创建了一个,那么我想它不是Spring Boot应用程序。你不能按照Neo4j的人告诉你的方式运行它吗?这是一个Spring Boot应用程序-有一个简化的示例项目,它使用
SpringApplication
EnableAutoConfiguration
,尽管目前没有演示任何
Spring Boot starter web
控制器或任何东西。Neo4j浏览器部件只是查看数据库的附加界面。Spring Boot部件提供所有启动组件,例如
Spring Boot starter jetty
Spring Boot starter web
Spring Boot starter test
,等等。这不是一个Spring Boot问题-这是一个Jetty问题-Spring Boot的行为符合我的预期。我只是想知道,在Jetty问题仍然存在的情况下,是否有一种变通方法可以让我部署(而不是maven程序集)来继续使用Spring Boot uber jar。我不认为有-只是想问这个问题。
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <requiresUnpack>
            <dependency>
                <groupId>org.neo4j.app</groupId>
                <artifactId>neo4j-browser</artifactId>
            </dependency>
        </requiresUnpack>
    </configuration>
    <executions>
       ...
</plugin>