问题标签 [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.
java - 无法加载(查找)j2v8_android_x86 库
我有一个使用j2v8_android 2.2.1
库的 gradle 项目(它为 V8 JS 引擎提供 Java 绑定 - android 端口)。j2v8_android_x86
不幸的是,在执行项目后(构建成功没有问题),我得到一个与缺少库文件相关的异常。V8
尝试创建运行时时会出现问题:
例外本身是:
当我调查时,我在(和)apk
的根目录中看到两个库文件。如果我理解正确,这些文件的名称和位置是正确的,应该解决它们。apk
libj2v8_android_armv7l.so
libj2v8_android_x86.so
该应用程序由Gradle 2.2.1
(on Oracle JVM 1.8.0_45
) 编译和打包,具有Android SDK 19
兼容性(具有语言级别支持1.7
)并在Hudl2
运行时执行Android 4.4.2
。
java - 卸载本机库
TLDR;
有什么方法可以告诉 java 卸载本机库以便我可以重新加载它?(我知道它只能在单个类加载器中加载。见下文)。我知道当类加载器被垃圾收集时它被卸载,但我没有成功强制垃圾收集。有任何想法吗?
我发现这个问题解释了为什么我会遇到错误: .dll 已经加载到另一个类加载器中?
但这并不特定于我想要做的事情。我们有一个 jar,我们希望能够在运行时动态加载(插件样式),以便在另一个服务上运行一些规模测试。
它在第一次运行时运行良好,但是当我停止测试运行并尝试卸载以前的类加载器并加载新的类加载器时,我收到以下错误:
这是我的方法,它创建了一个新的类加载器来动态加载我的 jar,如果之前有一个,它会通过调用使其无效classLoader.close()
:
我的问题:有没有办法告诉 Java 应该卸载本机库?
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
java - Eclipse Auto Deploy 不包含本机库
我在 Eclipse 中有一个 Java webapp。我启用了自动部署,所以每当我进行更改时,eclipse 会自动将 webapp 重新部署到我的本地 Tomcat 服务器,我所要做的就是刷新页面。到目前为止,这工作得很好而且很漂亮。
但是,我最近添加了这个依赖项:
此依赖项包括一些本机库(.dll
我的 Windows 机器上的文件)。当我手动部署时(通过右键单击项目,单击“运行方式”,然后单击“在服务器上运行”),这工作正常。我可以完全按照我的预期使用这个库。
如果我然后进行更改(任何更改,甚至添加评论),eclipse 会自动重新部署。但是当我尝试使用该库时(通过简单地刷新页面并再次运行完全相同的代码),我收到此错误:
因此,Eclipse 在自动部署时似乎无法加载本机库,即使在我手动部署时它工作正常。
但是,在这两种情况下的值java.library.path
是相同的:
在这两种情况下,位置.
都是C:\Users\Kevin\Desktop\eclipse\.
,并且在这两种情况下,它都包含相同的文件:
引发异常的代码行是:
该代码在我手动部署时运行良好,但在随后的自动部署时失败。
我的谷歌搜索让我看到了这个论坛帖子,它只说“重新加载时可能会出现问题”,但没有提供任何解决方案。所以,我的问题是:
为什么 Eclipse 在自动重新部署时不包括本机库?
我可以告诉 eclipse 在自动重新部署时包含本机库吗?是否有一些我没有看到的设置?
如果自动重新部署根本不支持本机库,是否有一些官方消息来源这么说?
javascript - 安卓 Javascript 引擎;需要用Rhino、J2V8等替换WebView
我们正在尝试用布局文件和某种 javascript 引擎替换我们的 webview 和 html。有大量的 javascript 必须被调用,并且我们有一个相当大的 JavaScriptInterface 需要被 JS 引擎访问。我一直在尝试 Rhino 和 J2V8,但无法找到一种方法让 javascript 访问完整的方法类或注释,其工作方式类似于您为 WebView 注释方法的方式。
如果有人有任何见解,将不胜感激!
谢谢,乔恩
ubuntu - 在 Ubuntu 上构建 J2V8 时遇到问题
我正在尝试在 Ubuntu 16.04 上构建 J2V8,但我不断收到错误消息。我正在运行 Github 上提供的安装脚本,但我不断收到此错误:(为简洁而编辑)
我不知道/data/jenkins/node
应该指什么,因为我知道没有具有/data
目录的 Linux 系统。我已经尝试重新安装 OpenJDK 来解决这个问题,fatal error: jni.h
但是当我尝试这样做时似乎会抛出一个错误。
linux - 根目录中带有“/data”的 Linux 发行版?
我正在尝试在 Ubuntu 上运行 J2V8 的安装脚本,它似乎引用了一个名为/data/jenkins/node
.
我从来没有听说过根目录中有这样的文件夹,有什么想法吗?
编辑:虽然这可能与Trouble building J2V8 on Ubuntu是同一个问题,但这个问题没有答案,所以我认为更一般地改写它并再次提问是合理的。
android - 我可以在 J2V8 中终止 JavaScript 执行吗?
我已经通过J2V8在我的 Android 项目中嵌入了 v8 。这很好用,但是在某些情况下脚本会挂起(我想可能是由于某种无限循环)。代码太复杂而无法调试,并且总是会出现脚本疯狂运行的情况。
为了确保没有一些僵尸线程挂在周围并耗尽电池,我想定义一个超时并在脚本尚未返回时终止 v8。当然,我在主线程中执行脚本,AsyncTask
或者IntentService
永远不会在主线程中执行脚本。这样,Android 就不会保护自己显示“应用程序无响应”(ANR)。后台线程运行运行运行运行......
如何以干净的方式杀死v8?
javascript - 在 J2V8 中使用 Promise
我试图通过 J2V8 在 Java 项目中使用inline-css NPM 包将样式表内联到样式属性中。
但是既不会调用成功回调也不会调用错误回调,也不会引发错误。我找不到任何适用于 J2V8 的文档,并且提供的示例在这里并没有真正的帮助。有没有人使用 J2V8 来处理 JavaScript 承诺?还是有人看到错误?
此外,如果您知道一个好的 Java 库来内联 CSS,那也会很有帮助。当您有多个类和元素上的 id 时,到目前为止我遇到的那些并不能真正可靠地工作。CSSBox 看起来是一个很有前途的解决方案,但它似乎不能正确处理供应商前缀规则。
另一种方法是使用 CLI 脚本,但这对我来说是最后的手段,因为这意味着我还需要在我的 Java 应用程序旁边部署 NodeJS。
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 上吗?