问题标签 [java-runtime-compiler]

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 投票
2 回答
337 浏览

java - 如何捕获“无法反序列化对象”。Java(Android)中的异常?

因此,假设我正在将来自服务器的大量数据转换为自定义的本地 java 对象。POJO 有一个 int 变量,这是我期望从服务器获得的。只是,假设某些数据将数字列为字符串而不是整数。我有一个 for 循环设置,如:

因此,对于 99% 的文档将 int 作为 int,但有一个将其作为 String。因此,当 for 循环到达该文档时,它会抛出java.lang.RuntimeException: Could not deserialize object. Failed to convert a value of type java.lang.String to int我知道我需要更新服务器上的数据,我已经这样做来解决问题。

我的问题是:如何创建一个 catch 块或其他东西,它会简单地跳过服务器中与我的对象类的数据模型不匹配的文档?因为我不希望我的客户端应用程序在服务器数据出现问题时崩溃。

0 投票
2 回答
1365 浏览

java - Do all operating systems already have JRE installed for running java applications?

Let say I am not a java developer and an ordinary person, and installing any application that is written in Java. So, do I need to first install the JRE or no all operating systems already have JRE installed on them?

0 投票
2 回答
3502 浏览

java - Java 错误打开注册表项“软件\JavaSoft\Java 运行时环境”

在命令提示符 Windows 7 上运行“java -version”时,我得到这个:

我已经检查了环境变量:

PATH包括"%JAVA_HOME%

我也尝试过删除文件:java.exe、javaw.exe 和 javaws.exe,ProgramData\Oracle\JAVA\Javapath 但是它们不会删除。虽然我是管理员。

我也检查C:\Windows\System32C:\Windows\SYSWOW64没有找到要删除的 java.exe、javaw.exe 或 javaws.exe。

我还能尝试什么?

0 投票
2 回答
9407 浏览

java - IntelliJ IDEA 中的 UnsupportedClassVersionError 故障排除

我正在学习使用 Intellij IDEA 的 Java 课程。在这个“测试”项目中,我只有两个测试类,如下所示(它们真的没有任何代码)。在我解决这个问题之前,我只需要声明我所有的项目都运行正常,只是我在运行终端命令时遇到了以下问题,我担心我的 IDE 搞砸了:

当我需要使用以下命令获取类 BankAccount 的串行版本时,就会出现问题:

我收到如下所示的错误,并且我了解这些类是由较新的 Java 运行时错误编译的,但是如何在 Intellij 中解决此问题?在任何项目中的任何类上运行命令时,我都会遇到相同的错误。

附加说明:使用 java com.company.Main 在终端中运行 Main 类时,我也收到与此相关的错误

我认为可能是问题的原因:在第一次尝试“serialver”之前,我更改了项目文件夹的名称(我只是在 Windows 的文件资源管理器中使用了“重命名”,它搞砸了一切在 Intellij 中(无论我打开什么项目,它都没有 SDK,也没有运行/调试配置)。所以,我在项目上选择了“添加 SDK”(或类似的东西,并从列表中选择了 JRE 12。然后我运行了“调试Main”和运行/调试配置是自动设置的。

当我转到项目结构 > 项目设置 > SDK 时,我只有一个 SDK:“C:\Program Files\Java\jdk-12.0.1”。

当我转到项目中的“运行/调试配置”时,在 Application > Main 的 JRE 中,我有以下选择(但据我了解,这些都是同一个 SDK,对吧?):

  • 默认(12 - 'Test' 模块的 SDK)
  • 12(Java版本“12.0.1”)
  • “C:\Program Files\Java\jdk-12.0.1”

所以我不知道如何在这里调整任何东西?我如何能够在任何时候在更新的 Java Runtime 版本上编译这些类?

这里的问题是我不确定是否还有其他问题,或者我之前所做的调整是否搞砸了。

课程:

跑步时 E:\Software Projects\Test\out\production\Test>serialver com.company.BankAccount

我在终端中得到的是以下错误:

运行 Main 类时出错E:\Software Projects\Test\out\production\Test>java com.company.Main

0 投票
0 回答
51 浏览

java - 为什么我不能在 Windows 中运行 Jar 文件?

我正在尝试使用 java -jar filename.jar 在 windows cmd 中运行 javaFx jar,但我收到此错误:错误:JavaFX 运行时组件丢失,并且需要运行此应用程序。在 intellij 中,该程序运行良好,但我无法在 Windows 中运行它。有任何想法吗?

这是我的 Java 版本

0 投票
1 回答
82 浏览

java - 将我们的应用程序从 Oracle JRE 迁移到 openJDK JRE 有什么影响吗

我知道在早期,Oracle JDK 和 OpenJDK 由不同的组维护,因此在性能上也存在细微差别,它们是 OpenJDK 中缺少的一些 API。但截至目前,两者都由 Oracle 维护。

因此,考虑到 JRE 8,1
.) 两者是否存在性能差异。2.) 在 Open JDK 3 之外的 Oracle JRE 上是否有任何可用的优化。) 是否缺少任何 API?

Oracle 团队的任何人都可以回答上述问题吗?

注意:我们只是在移动 JRE,而不是讨论 JDK 的移动。

0 投票
2 回答
235 浏览

java - 执行长时间运行的命令 Java 时显示输出,无需等待 RuntimeExec

我有大约需要 4 分钟才能完成执行的命令。从 windows 命令提示符执行命令时,它会显示计时信息和连续输出。

我想在从我的 Java 代码运行命令时显示该输出。正常执行等到命令退出并获取输出。我想在运行时获得输出而不等待命令完成。

这是我的代码:

这段代码的问题在于它会在命令结束之前立即打印所有输出。

0 投票
0 回答
215 浏览

java - 是否有任何安全的方法可以为两个不同的 JRE 序列化/反序列化 Java Lambda?

有一个客户端需要序列化客户端定义的许多 lambda 函数并将它们发送到服务器,服务器必须能够正确反序列化它们。

服务器在客户端也有所有这些 lambda 函数的实现,但细节可能与客户端实现略有不同(如版本控制差异)。

鉴于 Java Lambda 依赖于编译器特定的工件,简单地将 lambda 函数序列化为 SerializedLambda 并将其发送到服务器端是行不通的,因为服务器端实现的微小差异可能使其自身与序列化的 lambda 表达式不兼容。

我的问题是,使用来自客户端的序列化 lambda,有没有办法在服务器上调用相应的 lambda 函数?在这种情况下,我可以完全控制序列化/反序列化,但我无法控制客户端/服务器中 lambda 函数的实现。可能有成千上万个这样的 lambda 函数,这让我很难为每个 lambda 函数手动定义规则。

那么,给定(封闭)类名、方法类型(arg 类型 + 返回类型)、lambda 函数名,是否可以在服务器端调用相应的 lambda 实现?


如果 lambda 不是来自固定集合,我该怎么办?是否不可能有一个单一的 ser/deser 规则来解决这个问题?

0 投票
1 回答
191 浏览

java - Java SerializedLambda 的 captureClass 和 implClass 有什么区别?

SerializedLambda 的签名如下:

SerializedLambda(类 captureClass,字符串功能接口类,字符串功能接口方法名,字符串功能接口方法签名,int implMethodKind,字符串 implClass,字符串 implMethodName,字符串 implMethodSignature,字符串实例化方法类型,对象 [] captureArgs)

现在,我可以看到捕获类是一个deserializeLambda

SerializedLambda 有一个 readResolve 方法,该方法在捕获类中查找名为 $deserializeLambda$(SerializedLambda) 的(可能是私有的)静态方法,并以自身作为第一个参数调用该方法

但我没有明白implClass它的用途。

获取包含实现方法的类的名称。

捕获类不就是有实现方法的吗?我尝试序列化 lambda 函数以查看这些字段包含哪些值,但它们具有相同的类。implClass和 和有什么不一样capturingClass

0 投票
1 回答
230 浏览

java - 在 Janino 中从字符串编译 Lambda 表达式

我正在尝试使用 Janino 从字符串编译一个类。该类在函数内包含一个 lambda 表达式,但它似乎无法识别引用运算符“->”和“::”。

我得到一个 CompileException 线程“主”org.codehaus.commons.compiler.CompileException 中的完整股权跟踪异常:第 1 行,第 346 列:主中的意外令牌“>”

下面是我正在使用的代码,