Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。




15
Java 8:Lambda-Streams,按方法进行过滤(异常)
我在尝试Java 8的Lambda表达式时遇到问题。通常它可以正常工作,但是现在我有抛出IOException的方法。最好查看以下代码: class Bank{ .... public Set<String> getActiveAccountNumbers() throws IOException { Stream<Account> s = accounts.values().stream(); s = s.filter(a -> a.isActive()); Stream<String> ss = s.map(a -> a.getNumber()); return ss.collect(Collectors.toSet()); } .... } interface Account{ .... boolean isActive() throws IOException; String getNumber() throws IOException; .... } 问题是,它无法编译,因为我必须捕获isActive-和getNumber-Methods的可能异常。但是,即使我显式使用了如下所示的try-catch-Block,它仍然无法编译,因为我没有捕获到Exception。因此,或者JDK中存在错误,或者我不知道如何捕获这些异常。 class Bank{ .... //Doesn't compile …

18
即使设置正确,Gradle也会发现错误的JAVA_HOME
尝试运行gradle时,出现以下错误: # gradle ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java Please set the JAVA_HOME variable in your environment to match the location of your Java installation. 但是,当我检查JAVA_HOME变量时,我得到: # echo $JAVA_HOME /usr/lib/jvm/java-7-oracle 我的JAVA_HOME是在.bashrc中定义的,我已经仔细检查过它是否被设置为源。 运行java -version还确认JAVA_HOME设置正确并且在PATH上。 # java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) …

3
Tomcat VS Jetty [关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我想知道每个服务器相对于生产环境的负面影响。有没有人对其中一项功能有很大的疑问?性能,等等。我还快速查看了新的Glassfish,它是否与简单的servlet容器匹配(至少似乎具有良好的管理接口)?

16
Java多重继承
为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清。 可以说我有类Animal此有子类Bird和Horse我需要做一个类Pegasus,从扩展Bird和Horse自Pegasus既是一只鸟和一匹马。 我认为这是经典的钻石问题。从我能理解经典的方式来解决,这是使Animal,Bird和Horse类接口,并实现Pegasus从他们。 我想知道是否还有另一种方法可以解决仍然可以为鸟和马创建对象的问题。如果有一种能够创造动物的方法,那也很棒,但不是必须的。

8
向流中添加两个Java 8流或一个额外的元素
我可以添加流或其他元素,如下所示: Stream stream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)); 我可以随时添加新内容,例如: Stream stream = Stream.concat( Stream.concat( stream1.filter(x -> x!=0), stream2) .filter(x -> x!=1), Stream.of(element)) .filter(x -> x!=2); 但这是丑陋的,因为concat是静态的。如果concat是实例方法,则上面的示例将更容易阅读: Stream stream = stream1.concat(stream2).concat(element); 和 Stream stream = stream1 .filter(x -> x!=0) .concat(stream2) .filter(x -> x!=1) .concat(element) .filter(x -> x!=2); 我的问题是: 1)是否有充分的理由为什么它concat是静态的?还是我缺少一些等效的实例方法? 2)无论如何,有没有更好的方法?

8
在try-with-resources块中管理多个链接资源的正确习惯吗?
仅使用一种资源时,Java 7 try-with-resources语法(也称为ARM块(自动资源管理))非常好,简短而直接AutoCloseable。但是,当我需要声明相互依赖的多个资源时(例如a FileWriter和a BufferedWriter将其包装),我不确定什么是正确的习惯用法。当然,这个问题涉及AutoCloseable包装某些资源的任何情况,而不仅仅是这两个特定的类。 我提出了以下三种选择: 1) 我见过的天真习惯是在ARM管理的变量中只声明顶层包装器: static void printToFile1(String text, File file) { try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) { bw.write(text); } catch (IOException ex) { // handle ex } } 这很不错,也很简短,但是坏了。因为底层FileWriter没有在变量中声明,所以它永远不会在生成的finally块中直接关闭。只能通过close包装方法将其关闭BufferedWriter。问题是,如果从bw的构造方法中引发了异常,close则不会调用该异常,因此基础层FileWriter 也不会关闭。 2) static void printToFile2(String text, File file) { try (FileWriter fw = new FileWriter(file); …


8
Java中的@UniqueConstraint批注
我有一个Java bean。现在,我想确保该字段应该唯一。 我正在使用以下代码: @UniqueConstraint(columnNames={"username"}) public String username; 但是我遇到了一些错误: @UniqueConstraint is dissallowed for this location 使用唯一约束的正确方法是什么? 注意:我正在使用播放框架。

7
向IntelliJ Project添加Gradle支持的最佳方法
我到处环顾了很多,还没有找到将现有IntelliJ项目转换为Gradle的最佳解决方案。我在团队环境中工作,我们目前共享.ipr文件,因为我们要跟踪一些构建配置。最终,我们将摆脱那些偏爱Gradle的人,但是在Gradle转换完成之前,我无法搞砸。 另外,我们的Java源文件位于src目录的根目录中,而不是标准的src / main / java。 有什么方法可以将Gradle添加到项目中,而又不会使我删除并重新创建IntelliJ项目,又不会在其他人进行Git拉动时搞砸其他人呢?


6
双向JPA OneToMany / ManyToOne关联中的“关联的反面”是什么?
在@OneToManyJPA注释参考的示例部分中: 示例1-59 @OneToMany-具有泛型的客户类 @Entity public class Customer implements Serializable { ... @OneToMany(cascade=ALL, mappedBy="customer") public Set<Order> getOrders() { return orders; } ... } 示例1-60 @ManyToOne-具有泛型的Order类 @Entity public class Order implements Serializable { ... @ManyToOne @JoinColumn(name="CUST_ID", nullable=false) public Customer getCustomer() { return customer; } ... } 在我看来,Customer实体是协会的所有者。但是,在mappedBy同一文档中对属性的解释中写道: 如果关系是双向的,则将关联的反(非所有权)侧的maptedBy元素设置为拥有该关系的字段或属性的名称,如示例1-60所示。 但是,如果我没有记错的话,那么在示例中,mappedBy实际上是在关联的拥有方而不是非拥有方中指定的。 所以我的问题基本上是: 在双向(一对多/多对一)关联中,所有者是哪个实体?我们如何指定一方为所有者?我们如何指定“多方”作为所有者? “关联的反面”是什么意思?我们如何将一侧指定为逆?我们如何将“多面”指定为反面?

6
断点被删除,我如何使它们有效?
我有一个棘手的问题: 我无法设置有效的断点。没有在Tests中,也没有在Java类中。我搜索了Stackoverflow和google,但找不到任何遇到相同问题的人。 我正在使用STS(x86)和Maven。 编辑:这似乎令人困惑,但我自己解决了。我必须去运行->跳过所有断点(设置了它,我想知道它是如何设置的,因为我没有这样做)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.