Tag: javac

添加包声明时无法创建jar

我收到了一个非常简单的类,其中有一些文件夹可以像这样编译而没有问题: javac -classpath /home/DigestJavaLinux/classes DigestClass.java 在classes文件夹中,我有一个名为OasisEMSecImp.class的 .class文件 我怎么需要导入类并在另一个项目中使用它的方法,该方法为银行生成一个摘要字符串来检查事务,并接收总和其他参数。 如果我加 包digestclass; 到了课程开始它不起作用,我得到错误: digestclass/DigestClass.java:136: cannot find symbol symbol : class OasisEMSecImp location: class DigestClass OasisEMSecImp digest= new OasisEMSecImp(); ^ digestclass/DigestClass.java:136: cannot find symbol symbol : class OasisEMSecImp location: class DigestClass OasisEMSecImp digest= new OasisEMSecImp(); ^ 2 errors 更新:这是文件。 它编译没有包声明: package digestclass; import java.*; class DigestClass { private […]

关于自动重新编译,我无法发现javac的-classpath和-sourcepath选项之间的区别

我试图理解javac的-classpath和-sourcepath选项之间的区别,关于源代码文件的自动重新编译。 我阅读了关于javac主题的Java文档,并且对于它的-sourcepath选项,它说明了 – Note: Classes found through the class path may be subject to automatic recompilation if their sources are also found 我还查看了这个网页 (idevelopment.info),以了解有关javac的-classpath和-sourcepath选项的更多信息。 在他们的示例中,它描述了一个测试项目,涉及两个名为TestFoo.java(一个超类)和TestBaz.java(一个依赖子类)的java文件。 它给出了如何编译这个测试项目的三个选项,其中两个总结如下。 选项#2 在编译TestBaz时将TestFoo添加到源路径: javac -d baz/classes -sourcepath foo/src baz/src/TestBaz.java 选项#3 将依赖项放在sourcepath和classpath中。 然后,如果类路径中的.class文件过期,则将重新编译sourcepath中的.java文件。 不幸的是,我无法发现这两个选项之间的区别。 例如,在选项#2(不使用-classpath)中,如果我编辑TestFoo.java或TestBaz.java,那么我将获得更新的TestFoo.class或TestBaz.class文件。 换句话说,如果.class文件过时,那么将重新编译源代码。 在上面的选项#3(使用-classpath)中,会发生同样的事情。 因此,我看不出选项#2和#3之间的区别。 有人可以概述一个简单的示例测试项目的结构,我可以看到两个略有不同的javac命令与它一起使用吗? 一个javac示例命令应该使用-classpath ,而另一个不应该使用-classpath 。 当使用包含-classpath的javac示例时,如果找到编辑的超类源文件,则会发生自动重新编译。 当使用排除-classpath的javac示例时,如果已编辑超类源文件,则不会进行自动重新编译。 非常感谢。

Java:系统找不到文件C:\ … java.exe

我已经安装了Java 8并设置了我的JAVA_HOME和JRE_HOME路径,并将%JAVA_HOME%添加到path变量的开头。 我创建了一个helloworld.java应用程序,并且能够使用以下命令编译它: javac helloworld.java 但是,当我尝试运行时: java helloworld 我收到错误: The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe 我怎么解决这个问题?

Java 8不兼容的类型

这是简单的代码 import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class SimpleTest { public static void main(String[] args) { final ArrayList<Map> maps = newArrayList( createMap(“1”, “a”, Collections.EMPTY_MAP, Collections.EMPTY_MAP), createMap(“2”, “b”, Collections.EMPTY_MAP, Collections.EMPTY_MAP), createMap(“3”, “c”, Collections.EMPTY_MAP, Collections.EMPTY_MAP) ); System.out.println(” maps = ” + maps); } public static Map createMap(String value1, String value2, Map object1, Map object2) […]

编译器在同一目录中找不到其他类

我写了一个有3个类的Java程序。 什么时候,我使用javac,每当我的主类尝试与其他类交互时,我都会收到错误。 我需要做些什么特别的事吗? 我只是打电话给javac Main.java。 任何帮助将不胜感激。 编辑: DFA myDFA = new DFA(); String test = args[0]; if(myDFA.accept(test)) 而错误是: Main.java:19: cannot find symbol symbol: class DFA location class dfa.Main 我有3个错误

在applet或Google AppEngine中托管Java编译器?

在网上搜索我发现Javac编译器是用Java编写的,我也在Sun的网站上查看源代码。 来源非常大,我无法取得任何进展。 此外,Eclipse项目内嵌了一个编译器,但是谁可以触摸它的源代码;-)。 所以我想我会按你的方式提出几个问题: Java编译器可以托管在Applet中吗? 是否可以使Java编译器在GAE上工作,从数据存储中动态加载生成的类文件?

在维护对Java 7的支持的同时使用@Repeatable

Java 8通过使用“容器”注释来支持可重复注释: @Repeatable(FooContainer.class) @interface Foo { String value(); } @interface FooContainer { Foo[] value(); } @Foo(“bar”) @Foo(“baz”) public class SomeClass { } 我有一个库,我想支持Java 7(或更新版本)。 该库广泛使用注释,并且可以从支持可重复注释中获益。 根据我的理解,容器注释甚至可以在Java 7中工作,只有一个人必须使用它: @FooContainer({@Foo(“bar”),@Foo(“baz”)}) public class SomeClass { } 我最终会喜欢的是:如果我的库的用户使用Java 8,则用户将能够使用重复的注释。 如果用户使用Java 7,他必须坚持手动编写容器注释。 这样的事情有可能吗?

如何查看IntelliJ IDEA用于编译代码的javac命令?

当我在IntelliJ IDEA中编写Java代码并运行它时,IntelliJ编译Java文件,提取类文件,然后运行类文件。 如何查看IntelliJ运行的javac命令行。 我问它所以我可以看到IntelliJ是否在javac命令中添加了一些标志。

从批处理文件中运行java程序,在IDE中运行正常

我正在为我的新笔记本电脑上的一个class级做一些基本的java作业 – 问题是,我似乎无法使用教师给我的指示从我的批处理文件中编译和运行程序。 我在Path Variables设置中将Path变量设置为我的JDK。 我的程序是一个简单的运输程序,用于跟踪货运信息 – 我在NetBeans中完美地运行程序(我们的指导员建议我们用它来开发代码),但他将使用批处理文件对它们进行测试,所以我们’还建议我们在我们的系统上使用我们创建的系统对它们进行测试 – 非常简单。 问题是,我似乎无法让这个工作。 我以前从来没有这样做过,但是我已经使用.bat文件来编译和运行C ++程序,以及在unix系统上使用makefile,所以我觉得因为不自己搞清楚这一点我绝对是愚蠢的但是我的搜索都没有返回任何有用的解决方案。 我的程序包含3个.java文件: Shipment.java – 包含在ShipmentHW1类中实现的抽象方法的接口 ShipmentHW1.java – 一个实现Shipment中抽象方法的类,并具有构造函数等来创建可用对象 TestShipment.java – 此程序的主类,它根据预设参数利用和创建ShipmentHW1对象。 这是超级基本的东西,而且,它在NetBeans IDE中运行得非常好。 给我们的说明声明批处理文件在包目录中(在这种情况下,我在我的桌面上留下了一个名为“shipping”的单独文件夹,这是包名称 – 不应该是任何问题) ,3 .java文件的位置。 他们说如果你不需要明确列出JDK的路径,那么你可以简单地 javac TestShipment.java java TestShipment.java pause 之后我得到错误,谈论它如何“找不到符号Shipment s = new ShipmentHW1();” 我试过添加导入,但由于它们在同一个包中,它甚至不应该是一个问题。 目录路径是 C:\Users\X\Desktop\shipping 所有7个文件都包含在: TestShipment.java TestShipment.class Shipment.java Shipment.class ShipmentHW1.java ShipmentHW1.class doHW1.bat 有谁有想法吗? 如果我太模糊,我可以提供更多信息 此外,我在Windows […]

java编译器的源代码在哪里?

我正在寻找Sun标准java编译器javac的源代码。 jdk1.6.0_07有一些相关的类,但它们是接口( java.lang.Compiler和javax.tools.JavaCompiler )。 com.sun.mirror.*和com.sun.source.*下还有一些软件包,它们似乎是用于表示java抽象语法树的接口。 但我找不到编译器源代码 – 任何人都知道它在哪里?