草庐IT

java - 如何在 ant build 创建的 jar 的错误堆栈跟踪中获取源代码行号?

我正在使用ant在eclipse中构建我的项目的jar。我在tomcat上部署那个jar。但是每当我的代码(在jar中)发生异常时,错误堆栈跟踪就会出现,但行号不会出现——而是说未知来源。如何获取错误堆栈跟踪中的行号? 最佳答案 您需要使用调试信息编译您的jar。具体来说,您需要找到编译类的javac任务,然后添加一个debug="on"属性。示例:可以找到完整的详细信息here. 关于java-如何在antbuild创建的jar的错误堆栈跟踪中获取源代码行号?,我们在StackOver

java - IntelliJ IDEA : StackOverflowError on Build Project

我正在使用以下IntelliJ。IntelliJIDEA2017.2EAPBuild#IU-172.2953.9,builtonJune14,2017IntelliJIDEAEAPUserExpirationdate:July14,2017JRE:1.8.0_152-release-915-b3x86_64JVM:OpenJDK64-BitServerVMbyJetBrainss.r.oMacOSX10.12.5我在构建项目时遇到了java.lang.StackOverflowError。有没有人遇到过同样的情况?build留言↓Information:java:Thesystemis

java - 此代码使用 ecj 而不是 javac 进行编译。这是 ecj、javac 中的错误还是两者都不是?

以下代码创建了一个Collector,它产生了一个UnmodifiableSortedSet:packagecom.stackoverflow;importjava.util.Collections;importjava.util.SortedSet;importjava.util.TreeSet;importjava.util.stream.Collector;importjava.util.stream.Collectors;publicclassSOExample{publicstatic>Collector>toSortedSet(){returnCollectors.toCo

java - 如何在 Java 11 中编写代码,但目标是 Java 8 及更高版本?

我正在开发一个小型库,出于显而易见的原因,我想使用所有Java11功能编写代码(我现在猜测的模块除外),但我希望该库与Java8及更高版本兼容。当我尝试这样做时:javac-source11-target1.8App.java我收到以下消息:warning:sourcerelease11requirestargetrelease11...当我查看字节码时,我看到该类的版本是0x37(Java11):$xxdApp.class00000000:cafebabe00000037...Java8无法加载它:Exceptioninthread"main"java.lang.Unsupporte

从 Eclipse 运行 ant 时出现 javac : java. lang.OutOfMemoryError

我已经在ini文件中为eclipse提供了大量内存,但它仍然没有使用超过300mb的内存,我可以在任务管理器中看到这一点。[javac]Thesystemisoutofresources.[javac]Consultthefollowingstacktracefordetails.[javac]java.lang.OutOfMemoryError:Javaheapspace[javac]atcom.sun.tools.javac.comp.Attr.selectSym(Attr.java:1938)[javac]atcom.sun.tools.javac.comp.Attr.visit

Java:JVM 将如何优化对 void 和空函数的调用?

假设我们有以下类:publicclassMessageextendsObject{}publicclassLoggerimplementsILogger{publicvoidlog(Messagem){/*empty*/}}和以下程序:publicstaticvoidmain(Stringargs[]){ILoggerl=newLogger();l.log((Message)null);//a)l.log(newMessage());//b)}Java编译器会删除语句a和b吗?在这两种情况下(剥离或不剥离),Java编译器的决定背后的基本原理是什么? 最佳答

java - "Self-suppression not permitted"究竟是什么?为什么 Javac 生成的代码会导致此错误?

这个新的Java7try-with-resources结构非常好。或者至少,在出现异常并毁了我的一天之前,它很好。我终于设法将它归结为一个只使用JUnit+jMock的可重现测试。@TestpublicvoidtestAddSuppressedIssue()throwsException{Mockerymockery=newMockery();finalDependencydependency=mockery.mock(Dependency.class);mockery.checking(newExpectations(){{allowing(dependency).expectedC

java - 设置 ant bootclasspath : JDK 1. 7 有一个新的 javac 警告,用于设置没有 bootclasspath 的旧源

如何结合-source1.5-target1.5设置antbootclasspath?这怎么可能不是1.5JDK的硬编码路径?我可以将环境变量设置为bootclasspath,类似于从ant中使用JAVA_HOME的方式吗?理想情况下,我想做一些事情,比如设置环境变量或将参数传递给ant。 最佳答案 这是一个说明,说明如何从环境变量中获取Java5引导类位置,然后使用它。首先,设置环境变量-例如JAVA5_BOOTCLASSES。propertytask让您可以访问环境,然后是javactask的bootclasspath参数将设置

java - 构建 Java 包(javac 到所有文件)

如何将目录下的所有文件编译成*.class文件? 最佳答案 好吧,这看起来很明显,所以我可能遗漏了什么javac*.java(带有适当的库引用等)或者也许:javac-dbin*.javajavac为输出创建正确的目录结构。您是否正在寻找更复杂的东西?如果是这样,您能否提供更多详细信息(以及您使用的是哪个平台)? 关于java-构建Java包(javac到所有文件),我们在StackOverflow上找到一个类似的问题: https://stackoverfl

java - Intellij IDEA : "unmappable character for encoding UTF-8" compiling ISO-8859-1 files

我有一个混合编码的源代码树,我的一些源文件收到上面的警告。我设法成功地将这些文件的编码设置为ISO8859-1,并且在使IDEA的缓存失效后,它们现在可以在编辑器中正确显示。但是,当我编译时,我仍然收到错误消息。生产构建使用ant,这不是问题,但这意味着我无法在IDE中“制作”。有没有办法让IDEA正确编译这些,或者失败时,将错误降低为警告? 最佳答案 我在IntelliJ选项面板Compiler/JavaCompiler中添加此属性解决了这个问题:额外的命令行参数:-encodingISO-8859-1