public class A {
}
public class B {
public static void b() {
System.out.println(A.class);
}
}
类文本A.class是如何在B.class的字节码中编译的?这是场参考资料吗?我在Oracle/Sun的字节码文档中找不到这一点。
无论它是什么,反编译者都不会有困难:
java -jar decompiler.jar B.class
拾起JAVA_TOOL_OPTIONS:‘-Dfile.code=UTF8’8‘
/由Procyon v0.5.30 //
公共类B{公共
我尝试在java中初始化2D双数组,这个双数组有1000行和50 cols。
当我这样做时,我得到了一个错误:
Too many constants, the constant pool for ClassName would exceed to 65536 entries.
以下是我工作的一部分:
double[][] haltonArray = {{0.116538, -1.08275, -0.832512, 1.9746, 1.68741, 2.23391,
0.703111, -0.400975, -1.8214, -2.22141, 0.127014,
Java在其Java7中引入了带有字符串的switch case。我想知道使用这样的开关是否会产生垃圾。
例如,在我的程序中,
String s = getString();
switch(s)
{
case ABC: // ABC is a final static constant
...
case CDE: // CDE is also final static constant.
...
}
java是如何执行这种切换的。假设有10个这样的开关情况。是否会在每次将string s与case ABC匹配时创建一个新字符串,以此类推?
如果是这种情况,它是
我编写了一个简单的java源代码,如下所示:
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
并使用javap -c命令将其转换为等效的字节码。
Compiled from "Main.java"
public class Main {
public Main();
Code:
0: aload_0
1: invokespecial
根据以下链接,java堆栈帧包含局部变量、操作数堆栈和当前类常量池引用。
也来自Oracle "Structure of JVM“第2.6.3节。“动态链接-每个框架(§2.6)都包含对当前方法类型的运行时常数池(§2.5.5)的引用,以支持方法代码的动态链接。”
我还了解到堆中的对象也有指向类数据的指针/引用。
堆栈帧将包含“当前类常量池引用”,它还将具有对堆中对象的引用,而堆中的对象也将指向类数据。这不是多余的吗??
例如。
public class Honda {
public void run() {
System.out.println("honda is
我有一个非常简单的Java应用程序,它带有一些使用JMS进行通信的bean。当我尝试部署和调试我的应用程序时,我得到以下内容
Informazioni: visiting unvisited references
Grave: Unknow type constant pool 18 at position38
Grave: Unknow type constant pool 0 at position39
Grave: Unknow type constant pool 0 at position40
Grave: Unknow type constant pool 10
在运行功能文件时,我将获得以下异常
线程"main“中的异常: cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:164) at cucumber.api.java8.En.Given(En.java:190) at stepdefinitions.steps.(steps.java:16) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)的常数池索引中的错误类型(sun.reflect.NativeCo
我正在使用,并希望对类文件进行处理,以跟踪某些字段的写入。我了解了putfield和putstatic指令是ASM中FieldInsnNode类的实例,我想注入一些代码来在运行时构造对象,并调用其他以Field对象作为参数的方法。
我通过编译一个简单的Java源代码做了一些实验:
package com.test.simple;
public class Simple {
public int a,b;
public void foo() {
a = 20;
b = 10;
}
}
然后使用javap检查类文件:
$ javap -c
下面是一个简单的类。
public class Test{
private int a = 10;
private float b = 20.0F;
}
使用javap -v -l Test.class命令查看类文件的结构。在Constant pool部分,我应该看到类的所有常量。然而,我可以找到float值是20.0f,但找不到int值。
public class Test
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref
我正在使用一个使用Java8和PicoContainer的Cucumber JVM特性文件运行。我已经把这些步骤去掉了,所以它们是空的,而且我仍然会得到一个错误。我的特点是:
Feature: Full Journey
Scenario: Can load a typical JIRA csv and calculate the distribution from it
Given a typical JIRA export "/closed_only_JIRA.csv"
When I import it into Montecarluni
Then I should se
在.jca文件文档中,提到常量池部分如下所示。
.constantPool {
/*
* The first six entries declare constant pool entries that
* are contained in
* other packages.
* Note that superMethodRef are always declared internal
* entry.
*/
classRef 0.0; /
当试图从intellij Ultra版部署到tomcat7时,收到了这个奇怪的消息。你会注意到信息行上的路径是完全错误的。它是从哪里获得的,我如何修复它?
Apr 03, 2013 12:38:26 PM org.apache.naming.resources.WARDirContext doLookup
INFO: The name [/WEB-INF/classes/C:\dev\apps\admin\newjdbcprops/xvdev.oracle.properties\] is not valid
javax.naming.InvalidNameException:
我收到这个错误:
java.lang.VerifyError: Bad <init> method call in method FooBar.<init>(I)V at offset 2
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
将此方法原生化背后的逻辑是什么?
与只使用哈希映射生成被拘留的字符串池相比,有什么优势呢?
这看起来有点奇怪,但似乎在非本地代码中很容易做到:
import java.util.HashMap;
public class String {
// ...
private final static HashMap<String, String> pool = new HashMap<>();
public String intern() {
if (pool.containsKey(this))
re