草庐IT

lang_createtable

全部标签

java - 如何从 java.lang.Class 对象获取源文件名/行号

是否有可能,给定一个java.lang.Class对象,获取源文件名和声明该类的行号?数据应该在.class文件的调试信息中可用。我所知道的唯一一个JDK返回此类调试信息的地方是java.lang.StackTraceElement,但我不确定是否可以强制Java创建java.lang。StackTraceElement任意类的实例,因为我们没有在类中执行方法。我的确切用例是一个匿名内部类,它有一个编译器生成的名称。我想知道类声明的文件名和行号。我不喜欢使用字节码操作框架,但如果必须的话,我可以回退到它。 最佳答案 这个问题的答案归

java - 将 java.lang.reflect.Type 转换为 Class<T>

如何转换java.lang.reflect.Type至Classclazz?如果我有一个方法作为下一个,其参数为Class:publicvoidoneMethod(Classclazz){//Impl}然后是另一个参数为java.lang.reflect.Type的方法它调用oneMethod(Classclazz)为此我需要转换java.lang.reflect.Typetype至Class:publicvoidsomeMehtod(java.lang.reflect.Typetype){//IwanttopasstypeargtoothermethodconvertedinClas

java - 获取调用者方法 (java.lang.reflect.Method)

我想获取调用方法java.lang.reflect.Method。不是方法的名称。这是一个如何获取调用者类的示例。//findthecallersclassThreadt=Thread.getCurrentThread();Classklass=Class.forName(t.getStackTrace()[2].getClassName());//dosomethingwiththeclass(likeprocessingitsannotations)...仅供测试! 最佳答案 如果它只是为了测试,那么这可能会起作用。它假定类文件

java - EasyMock : java. lang.IllegalStateException : 1 matchers expected, 2 记录

我在使用EasyMock2.5.2和JUnit4.8.2(通过Eclipse运行)时遇到问题。我在这里阅读了所有类似的帖子,但没有找到答案。我有一个包含两个测试相同方法的测试的类。我正在使用匹配器。单独运行时每个测试都会通过。第一个测试总是通过-如果我在文件中切换测试顺序,情况就是如此。这是测试代码的简化版本:privateXthingmockXthing;privateMainThingmainThing;@BeforepublicvoidsetUp(){mockXthing=EasyMock.createMock(Xthing.class);mainThing=newMainThi

java - 在 commons lang3 中使用 StringEscapeUtils.escapeJavaScript() 的替代方法

我的任务是将我们的代码从使用org.apache.commons.lang更新为org.apache.commons.lang3我发现较新版本的StringEscapeUtils不再具有方法escapeJavaScript()但是我们在整个代码中的很多地方都使用了它。我一直在阅读文档,似乎整个StringEscapeUtils都被重写为lang3(seereleasenoteslang3.3.2),并且通过这次重写,他们删除了escapeJavaScript()但是他们没有说明在他们的任何文档中使用什么作为替代方案(反正我看不到)。这是what'snewdocumentation.所以

java - 如何即时修改 java.lang 类?

我正在寻找一种方法,通过重写字节代码和重新加载类来动态地向线程添加字段,但不确定是否可行。欢迎任何指点。我找到了一些关于修改和加载类的信息,我知道JRebel可以无缝地热交换您的代码,但不确定这里是否适用相同的方法/工具。这里的动机是探索理论上更好的线程局部对象替代方案。如果该方法有效,我应该能够用注释替换线程本地,结果应该优于当前的JDK实现。PS:请救救我“万恶之源”阐明用例:假设我有一个带有ThreadLocal的类:classA{ThreadLocalcounter;...counter.get().inc()}我想用注释替换它:classA{@ThreadLocalCount

java.lang.OutOfMemoryError : Java heap space while reading excel with Apache POI 错误

我的文件是9MB,我在加载工作簿时遇到了这个错误。XSSFWorkbookworkbook=newXSSFWorkbook(excelFilePath);此行导致java.lang.OutOfMemoryError:Javaheapspace我该如何解决这个问题? 最佳答案 首先要检查的是-您是使用InputStream还是File打开XSSFWorkbook?用Fileismuchlowermemory打开它.接下来,你想读还是写?如果您的内存力非常紧张,可以使用类似sax的XSSF替代选项。有关阅读,请参阅http://poi.

java - java.lang.annotation.Retention的原因是什么?

我很清楚RetentionPolicy的含义,知道它们做什么以及何时做seemstomakesensetousethem.对于我自己的注释,我完全知道它们是否在运行时、类文件中或仅用于编译时需要。但是,对于库中定义的任何注释,恕我直言,您永远无法确定。例如,javax.annotation.Generated用于标记生成的代码,但它很少有用。由于AFAIK处理字节码的工具多于处理源代码的工具,因此信息在可以使用之前就消失了。作为运行时不存在的注释don'tthrowClassNotFoundException(不同于例如缺少接口(interface)),使用RetentionPolic

java - HTTPClient 示例 - 线程 "main"java.lang.NoSuchFieldError : INSTANCE 中的异常

我正在为以下简单程序使用Apache的HttpClient组件,我看到以下异常:Exceptioninthread"main"java.lang.NoSuchFieldError:INSTANCEatorg.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:52)atorg.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:56)

java - NoClassDefFoundError : org/apache/commons/lang3/StringUtils

我正在尝试使用this运行示例项目库,我收到以下错误:Exceptioninthread"main"java.lang.NoClassDefFoundError:org/apache/commons/lang3/StringUtilsatcom.github.devnied.emvnfccard.enums.EmvCardScheme.(EmvCardScheme.java:97)atcom.github.devnied.emvnfccard.enums.EmvCardScheme.(EmvCardScheme.java:32)atcom.github.devnied.emvnfcca