我需要使用Play Framework 2.3(Java)将外部文件加载到类路径中
规定:
ClassLoader classLoader = com.my.package.MyCustomJavaClass.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("/path/to/myproperties.properties");
我的Play Framework应用程序(使用Java)在其/lib
文件夹中有这个自定义JAR,因此它会自动添加到类路径中(经过测试,工作正常)。我的Play应用程序在第一次加载/
路由(索引路由)时调用MyCustomJavaClass,所以当我在浏览器中点击我的Play应用程序时,上面的类加载器和输入流代码就会被启动。
问题:
>
在启动Play应用程序时,我尝试将/path/to/myproperties.properties
加载到类路径中,但没有成功,因为我在自定义JAR中的代码可以看到它。
activator start -J-classpath "-J-classpath:/path/to/myproperties.properties"
我将-j-classpath;
添加到路径的开头,试图复制类路径中当前的所有内容,然后只添加一个外部文件。但是,这样做似乎不起作用(即我的inputStream为空)。
问题:
>
启动播放应用程序时,我是否正确执行了activator start-j-classpath
命令?试图先复制现有类路径的其他变体不允许启动play应用程序,但这个命令至少可以启动我的应用程序。
这是我想出的解决方案,希望它能帮助到其他人:
>
在部署play应用程序的“上层环境”(AWS服务器)中,我将application-override.conf
文件放在play framework应用程序目录的conf
文件夹中
code>application-override.conf与我的application.conf
完全相同,但我在两者中都有一些自定义属性,它们的值在play应用程序生存的每个环境中都不同
我的play framework应用程序在git repo中,它被克隆在每个上层环境中,所以我将application-override.conf
添加到.gitignore(我不希望它被选中到repo中,所以它只存在于服务器上)
启动播放应用程序时,我现在使用activator start“-dconfig.trace=loads-dconfig.file=conf/application-override.conf”
。这将用application-override.conf
覆盖application.conf
文件,并且application-override.conf
将位于play用于运行应用程序的JVM类路径中(因为它位于conf
目录中)。-dconfig.trace=loads
会吐出更多日志记录,让您知道.conf文件是否正确加载;如果一切正常工作,这不是一个必要的标志。
在java方面,在我的自定义JAR中,我现在可以执行以下操作:
Properties properties;
InputStream stream;
ClassLoader classLoader = com.my.package.MyCustomJavaClass.class.getClassLoader();
// first, look for application-override.conf in the classpath (upper environments)
stream = classLoader.getResourceAsStream("application-override.conf");
// if null, check for application.conf (local environment)
if (stream == null) {
stream = classLoader.getResourceAsStream("application.conf");
}
properties = new Properties();
properties.load(stream);
stream.close();
其他说明:
>
我曾考虑在conf
目录中做一个符号链接/软链接,并将application-override.conf
文件放在我环境中的其他地方,但在Play2.4之前,您不能在conf
目录中有符号链接,所以我只是将实际的application-override.conf
文件放在conf
文件夹中
application-override.conf
文件对于每个“上层环境”都有不同的属性值,否则我将只向git repo交付一个覆盖文件。在自定义JAR中,我不想放入寻找不同文件名的逻辑,如dev-override.conf
、pre-prod-override.conf
、prod-override.conf
等,我想要一个单一的上层环境覆盖文件。
与Activator Start
结合的-classpath=/path/to/myproperties.properties
或-j-classpath=/path/to/myproperties.properties
命令未成功。我也没有成功尝试追加到类路径,例如activator start-j-classpath=-j-classpath:/path/to/myproperties.properties
或其他类似的组合
在application-override.conf
文件中放置属性对我来说实际上是一举两得,因为我一直希望通过在每个环境中重写.conf文件以及自定义属性来进行一些特定于环境的更改
conf文件的HOCON格式要求我在属性值周围加上双引号,这是由于属性值的性质。在Java中读取这些属性时,引号对我来说仍然存在,所以在读取这些属性时,我必须执行str.replace(“\”“,”“)
本文向大家介绍JS加载器如何动态加载外部js文件,包括了JS加载器如何动态加载外部js文件的使用技巧和注意事项,需要的朋友参考一下 今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js JsLoader.js测试 测试结果如下:
问题内容: 在使用库在JavaScript中绘制图表时,我还是一个新手。我刚刚开始尝试使用Chartjs,但一直无法使用getJson或其他任何方式加载我的json对象并替换标签和数据。我以前使用过HighCharts,相比之下,它非常简单。另外,我将如何将其放入Angular的指令中并显示出来。 https://jsfiddle.net/0u9Lpttx/1/ index.html data
我试图使用axios将一个外部url加载到使用vuejs的div中,我得到了 CORS策略阻止了从origin访问在处的XMLHttpRequest:请求的资源上没有'Access-Control-Allow-Origin'标头。 我错过了什么? 堆栈跟踪: CORS策略阻止从来源“http://localhost:8080”访问位于“https://pay.stripe.com/receipts
这个标题非常接近如何在IntelliJ IDEA中添加外部库?以及将外部jar(lib/*.jar)添加到IntelliJ IDEA项目的正确方法。然而,我已经检查过了。 在“如何在IntelliJ IDEA中添加外部库?”,我不能很好地理解最佳答案的含义,也不能很好地理解在评论空间中提出相同问题的人。所以,有人给了他一个回答,显示了“向IntelliJ IDEA项目添加外部jar(lib/*.j
问题内容: 到处寻找它,找到答案却迷失了。有谁知道如何从另一个js文件加载外部.js文件? innerHTML可以工作,并且可以粘贴响应文本。问题在于JS无法在该文档中工作。jQuery.getScript应该正在加载该外部js文件,但不会加载 问题答案: 这是您将外部js文件加载到Jquery的方法
实际开发中,大多数项目,通常是3D美术设计师或建筑、机械等行业工程师提供的由3dmx、blender、substence、Solidworks等软件创建好的三维模型文件。 本章节第一小节以Threejs引擎自身为例,讲解Threejs模型导入导出,该小节对Threejs模型文件本身进行了讲解,让你明白你加载的三维模型文件里面都是包含什么内容。其它章节展示了一些加载外部不同格式模型的案例,除了讲解实