问题标签 [j2v8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1915 浏览

java - 无法加载(查找)j2v8_android_x86 库

我有一个使用j2v8_android 2.2.1库的 gradle 项目(它为 V8 JS 引擎提供 Java 绑定 - android 端口)。j2v8_android_x86不幸的是,在执行项目后(构建成功没有问题),我得到一个与缺少库文件相关的异常。V8尝试创建运行时时会出现问题:

例外本身是:

当我调查时,我在(和)apk的根目录中看到两个库文件。如果我理解正确,这些文件的名称和位置是正确的,应该解决它们。apklibj2v8_android_armv7l.solibj2v8_android_x86.so

该应用程序由Gradle 2.2.1(on Oracle JVM 1.8.0_45) 编译和打包,具有Android SDK 19兼容性(具有语言级别支持1.7)并在Hudl2运行时执行Android 4.4.2

0 投票
0 回答
4296 浏览

java - 卸载本机库

TLDR;

有什么方法可以告诉 java 卸载本机库以便我可以重新加载它?(我知道它只能在单个类加载器中加载。见下文)。我知道当类加载器被垃圾收集时它被卸载,但我没有成功强制垃圾收集。有任何想法吗?


我发现这个问题解释了为什么我会遇到错误: .dll 已经加载到另一个类加载器中?

但这并不特定于我想要做的事情。我们有一个 jar,我们希望能够在运行时动态加载(插件样式),以便在另一个服务上运行一些规模测试。

它在第一次运行时运行良好,但是当我停止测试运​​行并尝试卸载以前的类加载器并加载新的类加载器时,我收到以下错误:

这是我的方法,它创建了一个新的类加载器来动态加载我的 jar,如果之前有一个,它会通过调用使其无效classLoader.close()

我的问题:有没有办法告诉 Java 应该卸载本机库?

0 投票
1 回答
101 浏览

gradle - Gradle 找不到现有的 m2 库

谁能告诉我为什么 gradle 无法使用以下脚本加载 j2v8 依赖项:

使用 'com.eclipsesource.j2v8:j2v8_linux_x86_64:3.1.1' 效果很好,但使用 3.1.6 我得到错误 Error:(18, 13) Failed to resolve: com.eclipsesource.j2v8:j2v8_linux_x86_64:3.1.6

0 投票
1 回答
567 浏览

java - Eclipse Auto Deploy 不包含本机库

我在 Eclipse 中有一个 Java webapp。我启用了自动部署,所以每当我进行更改时,eclipse 会自动将 webapp 重新部署到我的本地 Tomcat 服务器,我所要做的就是刷新页面。到目前为止,这工作得很好而且很漂亮。

但是,我最近添加了这个依赖项:

此依赖项包括一些本机库(.dll我的 Windows 机器上的文件)。当我手动部署时(通过右键单击项目,单击“运行方式”,然后单击“在服务器上运行”),这工作正常。我可以完全按照我的预期使用这个库。

如果我然后进行更改(任何更改,甚至添加评论),eclipse 会自动重新部署。但是当我尝试使用该库时(通过简单地刷新页面并再次运行完全相同的代码),我收到此错误:

因此,Eclipse 在自动部署时似乎无法加载本机库,即使在我手动部署时它工作正常。

但是,在这两种情况下的值java.library.path是相同的:

在这两种情况下,位置.都是C:\Users\Kevin\Desktop\eclipse\.,并且在这两种情况下,它都包含相同的文件:

引发异常的代码行是:

该代码在我手动部署时运行良好,但在随后的自动部署时失败。

我的谷歌搜索让我看到了这个论坛帖子,它只说“重新加载时可能会出现问题”,但没有提供任何解决方案。所以,我的问题是:

  • 为什么 Eclipse 在自动重新部署时不包括本机库?

  • 我可以告诉 eclipse 在自动重新部署时包含本机库吗?是否有一些我没有看到的设置?

  • 如果自动重新部署根本不支持本机库,是否有一些官方消息来源这么说?

0 投票
1 回答
809 浏览

javascript - 安卓 Javascript 引擎;需要用Rhino、J2V8等替换WebView

我们正在尝试用布局文件和某种 javascript 引擎替换我们的 webview 和 html。有大量的 javascript 必须被调用,并且我们有一个相当大的 JavaScriptInterface 需要被 JS 引擎访问。我一直在尝试 Rhino 和 J2V8,但无法找到一种方法让 javascript 访问完整的方法类或注释,其工作方式类似于您为 WebView 注释方法的方式。

如果有人有任何见解,将不胜感激!

谢谢,乔恩

0 投票
1 回答
252 浏览

ubuntu - 在 Ubuntu 上构建 J2V8 时遇到问题

我正在尝试在 Ubuntu 16.04 上构建 J2V8,但我不断收到错误消息。我正在运行 Github 上提供的安装脚本,但我不断收到此错误:(为简洁而编辑)

我不知道/data/jenkins/node应该指什么,因为我知道没有具有/data目录的 Linux 系统。我已经尝试重新安装 OpenJDK 来解决这个问题,fatal error: jni.h但是当我尝试这样做时似乎会抛出一个错误。

0 投票
1 回答
1704 浏览

linux - 根目录中带有“/data”的 Linux 发行版?

我正在尝试在 Ubuntu 上运行 J2V8 的安装脚本,它似乎引用了一个名为/data/jenkins/node.

我从来没有听说过根目录中有这样的文件夹,有什么想法吗?

编辑:虽然这可能与Trouble building J2V8 on Ubuntu是同一个问题,但这个问题没有答案,所以我认为更一般地改写它并再次提问是合理的。

0 投票
1 回答
410 浏览

android - 我可以在 J2V8 中终止 JavaScript 执行吗?

我已经通过J2V8在我的 Android 项目中嵌入了 v8 。这很好用,但是在某些情况下脚本会挂起(我想可能是由于某种无限循环)。代码太复杂而无法调试,并且总是会出现脚本疯狂运行的情况。

为了确保没有一些僵尸线程挂在周围并耗尽电池,我想定义一个超时并在脚本尚未返回时终止 v8。当然,我在主线程中执行脚本,AsyncTask或者IntentService永远不会在主线程中执行脚本。这样,Android 就不会保护自己显示“应用程序无响应”(ANR)。后台线程运行运行运行运行......

如何以干净的方式杀死v8?

0 投票
1 回答
925 浏览

javascript - 在 J2V8 中使用 Promise

我试图通过 J2V8 在 Java 项目中使用inline-css NPM 包将样式表内联到样式属性中。

但是既不会调用成功回调也不会调用错误回调,也不会引发错误。我找不到任何适用于 J2V8 的文档,并且提供的示例在这里并没有真正的帮助。有没有人使用 J2V8 来处理 JavaScript 承诺?还是有人看到错误?

此外,如果您知道一个好的 Java 库来内联 CSS,那也会很有帮助。当您有多个类和元素上的 id 时,到目前为止我遇到的那些并不能真正可靠地工作。CSSBox 看起来是一个很有前途的解决方案,但它似乎不能正确处理供应商前缀规则。

另一种方法是使用 CLI 脚本,但这对我来说是最后的手段,因为这意味着我还需要在我的 Java 应用程序旁边部署 NodeJS。

0 投票
1 回答
720 浏览

node.js - 在 JVM 中运行时如何调试 J2V8/node.js?

通常,我使用节点检查器 ( https://github.com/node-inspector/node-inspector ) 来调试 node.js。这可以用于通过 J2V8 附加到在 JVM 中运行的远程 node.js 实例吗?

此外,node.js 的 dev 版本似乎支持原生 Chrome 调试:https ://github.com/nodejs/node/pull/6792 。如果 J2V8 采用这个版本的 node.js,我可以简单地将 Chrome 调试器直接附加到 JVM 上吗?