Tag: 编译

Gradle – Groovy和Java类依赖 – 编译

我的项目有Java(N文件)和Groovy代码(仅1个文件)。 Java编译依赖于这个用于Java编译的单个Groovy文件的类文件(compileJava任务成功)。 当我不使用src / java作为main> groovy> sourceSet部分中的srcDir之一时,我得到一个错误,说明找不到类/符号,这是在groovy文件/类中。 在ANT中,我们很容易在调用compile-java目标之前首先调用compile-groovy目标,但Gradle中的相同内容正是我想要查找的内容。 我读了一些post,发现如果我将main> java section设为NULL并为main> java指定srcDir,这是src / java里面的main> groovy sourceSet部分,那么它编译得很好。 我的:1。还有其他办法吗? 例如,以下应该有效: compileJava { dependsOn compileGroovy } 但是,这是一个infinte循环。 要么 如何使用doFirst进行compileJava任务: compileJava { doFirst { compileGroovy } } 这也不起作用。 build.gradle这样可行 ,但是在某种意义上compileRava在这里变得无用,即使源代码有N否。 src / java或src / java-test等树中的java文件。 我知道这个构建脚本正在运行但从逻辑上讲,如果他/她不熟悉为什么源代码为Groovy必须将“src / java”作为其srcDir值,它可能会给开发人员带来一些困惑。 apply plugin: ‘java’ apply plugin: ‘groovy’ sourceSets { main { groovy […]

为什么编译一些没有调试信息的java库

我最近注意到有一些java库(JDK,joda time,iText)在没有部分/全部调试信息的情况下编译。 缺少局部变量信息,或者缺少局部变量信息和行号。 这有什么理由吗? 我意识到它会使编译代码更大,但我不认为这是一个特别重要的考虑因素。 或者它只是使用默认的编译选项构建? 谢谢。

编译时的Java代码转换

我想在将源代码传递给编译器之前的编译时 转换 java源代码。 换句话说,我想创建一个能够转换的预处理器 “bla bla bla” 进入任何其他代码,如: new MyClass(“bla”, 3) 我的实际动机是进行字符串加密,如此处所述 有些人建议编写自定义注释处理器,但据我理解注释: 它们可用于生成新的类文件,但不能在传递给编译器之前转换现有代码 它们似乎在包,类或方法级别工作,但不是方法体/实现。 有些人建议使用Spoon或ObjectsWeb ASM等框架,但这些框架在现有代码库中学习和部署似乎很复杂。 我茁壮成长,为两种方法找到了一个简单的java代码预处理示例。 有没有人看到任何聪明的方法进行代码转换,而没有完全改变现有的大型代码库与多个常春藤模块? 注释似乎是最好的方法,但我不明白该怎么做。

使用命令行中的包编译Java代码时出错?

我有这个目录结构: project1/src/edu/course/firstweek/javacourse/Program1.java 上面一个包中的另一个文件: project1/src/edu/course/firstweek/program2.java 在program2.java的标题中,我有 package edu.course.firstweek; import edu.course.firstweek.javacourse.Program1; 现在,当我在命令行中运行以下内容时: Javac src/edu/course/firstweek/program2.java,我收到此错误: src/edu/course/firstweek/program2.java:14:error cannot find symbol System.out.println(program1.print(“hello world”)); symbol: variable Program1 location: class program2 2 errors 我可以看到编译器无法找到program1 ,但我在program2有正确的import package语句。 我需要帮助,在编译之后,运行程序需要考虑一些事项。 谢谢

对于具有字段double d = 2.2250738585072012e-308的类,编译挂起

我遇到了一个有趣的情况。 同事提交了一些更改,这些更改无法在我的计算机上从IDE(Eclipse)或命令行(Maven)进行编译。 在编译过程中出现的问题表现在占用100%CPU并且只杀死进程将有助于阻止它。 经过一些分析后,找到并解决了问题的原因。 事实certificate,在其中一个接口中有一条“double d = 2.2250738585072012e-308”(最后没有分号)。 以下剪辑重复了它。 public class WeirdCompilationIssue { double d = 2.2250738585072012e-308 } 为什么编译器会挂起? 一个语言边缘案例?

定位不同版本的JRE

我正在Windows Surface Pro上测试Java。 Surface Pro具有Java 7 Update 55,但没有安装JDK。 我使用javac从命令行在MacBook上编译了一个程序。 MacBook有Java 8 Update 5,它包含JDK(显然是因为我在MBP上编译)。 当我将程序从MackBook移动到Surface Pro时,我收到以下错误。 这里,“移动程序”意味着将两个*.class文件复制到新机器并尝试执行字节代码。 java.lang.UnsupportedClassVersionError: HttpsTest : Unsupported major.minor version 52. 尝试使用目标信息进行编译会导致: $ javac -target 1.7 HttpsTest.java SSLSocketFactoryEx.java javac: target release 1.7 conflicts with default source release 1.8 javac -help没有列出任何控制已编译程序的版本信息的选项( target除外,它似乎不起作用)。 如何为JRE的低级版本编译源文件? 在这种情况下,我的目标是Java 8机器上的Java 7。

如何更改maven构建目录?

我有一个maven项目,我用Netbeans编译。 我有办法指定一个不同的构建目录,编译后复制编译的二进制代码?

Java – 何时是编译器错误,何时是运行时exception?

我目前正在使用Sierra和Bates学习指南学习SCJP认证,并且在许多自我测试(模拟考试问题)中我一直遇到同样的问题 – 我无法判断特定错误是否会在运行时(一个exception)或编译时(编译错误)。 我知道这是一个模糊的问题,可能无法回答,但是,如何在编译或运行时发现错误? 你能给我发一些可以帮助我的网站链接吗?

访问被拒绝的Maven,http://repo1.maven.org/maven2

我刚刚下载了Maven的最新版本。 而当我想跑 mvn archetype:generate 我收到错误消息 [警告]读取原型目录时出错http://repo1.maven.org/maven2 org.apache.maven.wagon.authorization.AuthorizationException:访问被拒绝: http: //repo1.maven.org/maven2,De reasonPhrase:拒绝访问。 org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:928)org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)at org.apache.maven.wagon位于org.apache.maven.archetype.source的org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)的.StreamWagon.getIfNewer(StreamWagon.java:88).RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:119 )org.apache.mache.mache.z上的org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.getArchetypeCatalog(RemoteCatalogArchetypeDataSource.java:87)org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:216)。位于org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.selectArchetyp的org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.getArchetypesByCatalog(DefaultArchetypeSelector.java:200)的DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:205) e(DefaultArchetypeSelector.java:71)org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:197)org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)at org位于org.apache.maven.lifecycle.internal的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)的.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) .jojoExecutor.execute(MojoExecutor.java:145)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java) :59)在org.apache的org.apache.maven.life.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)。 org.apache.maven.Defa上的maven.DefaultMaven.doExecute(DefaultMaven.java:320) org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)的ultMaven.execute(DefaultMaven.java:156)org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)org .apache.maven.cli.MavenCli.main(MavenCli.java:141)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(来自org.codehaus.plexus.classworlds.launcher.Launcher的org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)的java.lang.reflect.Method.invoke(未知来源)的未知来源.launch(Launcher.java:230)org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) )[警告]在远程目录中找不到原型。 默认为内部目录[INFO]未定义原型。 使用maven-archetype-quickstart(org.apache.maven.archetypes:maven-archetype-quickstart:1.0) 我没有代理和互联网工作正常。 防火墙已关闭。 如何解决这个问题呢 ? 谢谢你的帮助。 如果我们查看类org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon方法fillInputData(InputData inputData),我们可以看到: public void fillInputData( InputData inputData ) throws TransferFailedException, ResourceDoesNotExistException,AuthorizationException { …. HttpResponse response; …. statusCode = response.getStatusLine().getStatusCode(); …. switch ( […]

从Jar重新编译Java类

我有一个可执行jar,它有一个类值错误的类文件。 我向作者请求了该文件并更正了该值。 现在我想编译它并将编译后的类文件添加到jar中并运行它。 毫不奇怪,我为jar文件中的自定义对象的引用获得了多个“找不到符号”错误。 我尝试通过引用类路径中的jar文件来编译文件,就像这样 C:/> javac file.java -classpath C:/ folder /其中/ jar /是 但这似乎没有用……我得到了同样的错误 C:/> javac file.java 有没有办法编译这个单独的类以某种方式引用jar中的其他文件? 谢谢。 我在遵循以下一些建议时遇到的错误: javac -classpath C:/jar/location.jar File.java File.java:226:找不到符号 符号:类东西 location:class com.shared.stuffers 东西s1 =新东西(); ^ 在Jar中找到了Stuff类,但javac程序无法看到…我觉得我做错了但不确定在哪里? 谢谢。