Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java modules are not handled properly #2080

Open
tgodzik opened this issue Jun 20, 2023 · 2 comments
Open

Java modules are not handled properly #2080

tgodzik opened this issue Jun 20, 2023 · 2 comments

Comments

@tgodzik
Copy link
Contributor

tgodzik commented Jun 20, 2023

Copied from scalameta/metals#4847

Describe the bug
Actually, I was trying to create a sample project, for a more complicated bug, but then I noticed that my "minimal project" doesn't seem to work without any changes

https://github.com/JPro-one/HelloJPro.

Screenshot 2023-01-11 at 22 21 58

This is a pure Java project. The question is, is that supposed to work?
I'm asking because Metals it's a scala language server.

When I look into my other projects, the Java parts sometimes work with Metals/Bloop, and sometimes not.
But Metals/Bloop is always trying to compile it, so I guess it's in the scope of the project.
So, I thought I start by posting the most simple case as a bug report.

If you wonder why I post this, I usually have a lot of mixed Scala/Java projects.

Expected behavior
No response

Operating system
macOS

Editor/Extension
None

Version of Metals
v1.21.0

Extra context or search terms
No response

@FlorianKirmaier
Copy link

I was playing around with it again, and this is the main issue that stops me from using VisualCode.
I have many mixed Java/Scala projects, and the latest IntelliJ Version is becoming increasingly unstable.

solution?
It seems like many of the problems can be solved by just using --module-path instead of -cp when a module-info.java exists.
This would probably make most modern projects compile - maybe after fixing a dependency that doesn't work as a module yet.

help
I would like to invest some time to make this work - if someone can guide me on how to do so.
Is there a way to find out the javac command used when running bloop compile <project>?
With some help I might even be able to make a PR fo this.

@tgodzik
Copy link
Contributor Author

tgodzik commented Jan 18, 2024

I haven't found time to work on it unfortunately, so I would be glad to get some help. The part dealing with the Java Compiler is actually not that hard. Take a look at:

final class BloopForkedJavaCompiler(javaHome: Option[File]) extends JavaCompiler {

And if you would need to write tests you could probably use the examples in

test("compile java code depending on scala code") {

Though not sure if those tests would be enough, you can also use sbt project such as the ones in https://github.com/scalacenter/bloop/tree/main/frontend/src/test/resources

You should be able to use the like in

test("compile is successful with semanticDB and javac processorpath") {

If you need more help do let me know! Unfortunately, I don't know much around modules aside from the fact that we should deal with them better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants