this post was submitted on 12 Jun 2023
2 points (100.0% liked)

Java™ Community

5 readers
1 users here now

Write once, run anywhere (WORA)

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.

The community

News, Technical discussions, research papers and assorted things of interest related to the Java Platform.

Rules
  1. Follow the Code of Conduct.
  2. Please make sure its a question/topic/post that would be new to most members. In Lemmy the publications are not closed, so you can continue to participate in them, regardless of the time they were published.
  3. Lemmy doesn’t have flags yet, so please tag your posts with [Question], [Help], [Learning], [JVM], [JSE], [OpenJDK], [Eclipse] or other you may think is appropriate.

Related communities

Resources

founded 5 years ago
MODERATORS
 

I am wondering if anyone can help me.

I have an issue with compiling some code in Eclipse but not with IntelliJ or javac.

I am using sneakyThrow to bubble a checked exception up through 2 streams.

Here is the smallest reproducible code I can make:

import java.io.IOException;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Example {
	public static void main(String[] args)
	throws IOException {
		List<List<Integer>> input = List.of(List.of(1, 2), List.of(2, 4));

		// Should return any List whose elements are all even.
		List<List<Integer>> output = input.stream()
			.filter(bubblePredicate(o -> o.stream()
				.allMatch(bubblePredicate(i -> {
					if (i > 10) {
						throw new IOException("Number too large.");
					}
					return i % 2 == 0;
				}))))
			.collect(Collectors.toList());

		System.out.println(output);
	}

	private interface ThrowingPredicate<S, E extends Exception> {
		boolean test(S s) throws E;
	}

	private static <S, E extends Exception> Predicate<S> bubblePredicate(ThrowingPredicate<S, E> callable)
	throws E {
		return s -> {
			try {
				return callable.test(s);
			}
			catch (Exception e) {
				sneakyThrow(e);
				return false;
			}
		};
	}

	private static <E extends Throwable> void sneakyThrow(Exception exception)
	throws E {
		throw (E)exception;
	}
}

Compiles and runs completely fine with javac 11.0.12, but doesn't on Eclipse 4.21.0.I20210906-0500 nor Eclipse 4.27.0.20230309-1200.

Has anyone encountered this before, or have any idea what I am misunderstanding?

you are viewing a single comment's thread
view the rest of the comments
[–] HamsterRage@lemmy.ca 1 points 1 year ago (1 children)

I'm not going argue semantics with you - but you're making it harder to get help if you don't explain what "doesn't compile" means?

[–] Threen@aussie.zone 2 points 1 year ago (1 children)

I am really struggling to understand what you are asking me to provide

Java is a compiled language. Eclipse is attempting that compile step and it fails. I have provided the error it gives me, a minimal code snippet to reproduce this, the location that Eclipse indicate the error occurs, and the specific 2 specific versions of Eclipse I have tried

Is it a screenshot of the error you are after? Maybe there is something obvious I am overlooking, but I really do no know what more I can give you

[–] HamsterRage@lemmy.ca 0 points 1 year ago (1 children)

Something is going on here. I don't see anyone else's comments, nor do I see the error message.

[–] Threen@aussie.zone 0 points 1 year ago (1 children)
[–] HamsterRage@lemmy.ca 0 points 1 year ago (1 children)

Well it explains why I looked so much like jerk (partially, at least). I'm still confused about why this is happening.

I see the comments in your screen snap, but I still don't see them in the app. I'm going look if I see them in a browser.

Maybe this is a federating issue???

[–] Threen@aussie.zone 0 points 1 year ago (1 children)

Haha, sorry I came across the way I did. I really was racking my brain trying to think what more I could provide. Normally for Java issues I can give a stacktrace, but in this case there is literally only a 4-word error message

When I view the post on your server it shows only our convo, so definitely a federation issue

[–] HamsterRage@lemmy.ca 1 points 1 year ago

Interesting. I don't see that stuff (aside from the screen snap) in my browser logged into lemmy.ca or lemmy.ml. Weird.