【问题标题】:how to bundle javascript files into Java application?如何将 javascript 文件捆绑到 Java 应用程序中?
【发布时间】:2011-02-02 23:34:30
【问题描述】:

Javascript 由 Java 应用程序执行。然而,像 Jquery 库这样的东西真的太长了,无法放入 String 变量中。我能够从文件中读取 jquery.js,但不确定如何将其打包到 .jar 文件中。

【问题讨论】:

  • 为什么要把java脚本打包成jar文件?不应该是战争吗?

标签: java javascript jquery


【解决方案1】:

加载 .js 文件与从 jar 文件加载任何其他资源相同。一般来说,我是这样做的:

对于jar文件根目录下存储的文件:

 SomeClass.getClass().getClassLoader.getResourceAsStream( "myFile.js" );

对于与 .class 文件一起存储在 jar 中的文件:

 SomeClass.getClass().getResourceAsStream( "myFile.js" )

这两种技术都会给你一个InputStream。这可以变成String,代码多一点工作。见Read/convert an InputStream to a String

当您的资源文件与您的 java 类文件在同一个 jar 中时,此技术适用。

【讨论】:

  • 如何将文件存储在 jar 的根目录中?如何将 .class 文件存储在 jar 中?有什么区别?我正在使用 Eclipse。
  • Eclipse 的默认设置是:默认包(“src”)中的文件存储在输出 jar 的根目录中。与 .java 源相同的包中的资源最终与输出 .class 文件一起出现。
【解决方案2】:

您可以在很多地方保存 JavaScript 源代码:

  • 在类路径中。你用getResourceAsStream() 获取它们
  • 在数据库中。是的,数据库。您可以像获取任何其他 CLOB 一样获取它们。

我个人将这两种方法用于不同的目的。您可以以与保存 .properties 文件的方式完全相同的方式将 JavaScript 文件保存在构建树中。就我个人而言,我只是将它们与 .java 文件一起保存,然后有一个构建规则来确保它们最终会出现在 .war 中,但它们确实可以存在于构建引擎可以找到它们的任何地方。

数据库是保存脚本的好地方,因为它使您的 Web 应用程序更容易支持允许动态更新的“脚本门户”。这是一个非常强大的工具,特别是如果您制作 Web 应用程序以便 Javascript 模块控制一些更重要的业务逻辑,因为您可以或多或少地“实时”部署更新,而无需任何部署操作。

有一个很大帮助的事情是创建一些实用程序代码来“包装”您使用 Javascript 的任何访问路径(即 Sun “javax.script” 的东西,或者 Rhino 绑定;在这个在时间点上,我个人会选择直接的 Rhino,因为无论如何它实际上并没有太大的区别,而且 Sun 的东西被困在一个相当古老和有缺陷的 Rhino 版本上,在当前的气候下可能不会一会儿看更新)。使用实用程序包装器,要做的最重要的事情之一就是让您的 JavaScript 代码(无论它来自何处)能够从您的服务器基础架构导入 other JavaScript 文件。通过这种方式,您可以开发 JavaScript 工具库(当然,也可以改编开源库)并让您的业务逻辑脚本导入并使用它们。

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2015-12-04
    • 2020-06-13
    • 2018-06-01
    • 2018-05-10
    • 1970-01-01
    • 2012-05-29
    • 2023-03-05
    • 2018-03-08
    相关资源
    最近更新 更多