Eclipse not recognizing Scala code

2020-06-30 12:22发布

问题:

I have Eclipse Indigo with the Scala IDE plugin. I downloaded a lift project from Maven. It builds correctly. Eclipse says it is viewing it with the Scala editor.

However, it is still giving my an error on each line because it is treat the code as Java (it gives errors for no semicolon, for the word "def" etc.) I tried cleaning the project and it still gives the errors.

回答1:

A couple of things I would try:

1) Right-click on project, Configure > Add Scala Nature.

2) In the Scala menu, Run Setup Diagnositics... > Use recommended default settings



回答2:

Open the Package Explorer, look at your scala source. Does the icon displays a S (for Scala), or a J (for Java)?

If you see a S, then you are likely missing the Scala Nature. As Luigi suggested, try to add the Scala Nature and see if that fixes your issue (Right-click on project, Configure > Add Scala Nature.)

Otherwise, if you see a J, the odds are that "JDT Weaving" is not enabled. That should not happen and might depend on other plugins you have installed.

What I would try if I were you is simply uninstalling all Scala IDE plugins from Eclipse ("Scala IDE for Eclipse", and also the "JDT Weaving for Scala" if you see it in the list of installed plugins). Then, reinstall Scala IDE 2.0.0-RC04. I know, it's not the ideal solution, but it's hard to tell what is going on without more information.

If that doesn't work either, please write a message in the scala-ide-user Mailing List. Make sure to provide the full list of plugins you have in your Eclipse installation. That might help us understand what is going on.



回答3:

This problem can show up when you copy an existing java project to start a new project or use a project file generator.

One thing you can look at is your Java Build Path inside project properties. Make sure your scala source folder doesn't have an include filter like **/*.java. Make sure it is **/*.scala or remove it and your source should be detected by the scala plugin.



回答4:

It may even be simpler than that, I forgot to write the package name at the top of the source file thus Eclipse neglected to see it as a Scala file.



回答5:

I solved the problem with compile/build errors with sbt-eclipse by

  1. Right-click project
  2. Scala menu -chose New Scala Installation and select version until no errors were listed


回答6:

I was facing the same problem, because in project scala folder was not included followed following steps project -> properties -> java built path -> source -> add folder



回答7:

I've had this problem before as well when using Maven and Eclipse - I'll be working in the Scala perspective and everything is fine, and then at some point Indigo completely loses track of the fact that it's using Scala and is building my code with a Java compiler. No amount of fiddling with Build Path and configurations, cleaning projects or enabling the Scala nature seems to fix it.

The only solution I've come up with so far is to use IntelliJ when I use Maven, and use Scala Eclipse plugin only when using SBT to build projects. You can try converting your Maven POM to an SBT project, but you'll have to update that every time your dependencies change. Heiko Seeberger's sbt-eclipse plugin is pretty slick.



回答8:

I have similar issues, though when I remove the Scala Nature and Add it back it becomes ok. Which is fine for now.

But there is another issue:

My Java Classes refuse to recognize my Scala ones. However when I do a "Ctrl + Click" = Open Declaration, it goes to the right place. My Java Classes that depend on Scala look like Red all over. I checked Build Path settings etc, they all look ok.



回答9:

My Java Classes refuse to recognize my Scala ones. However when I do a "Ctrl + Click" = Open Declaration, it goes to the right place. My Java Classes that depend on Scala look like Red all over. I checked Build Path settings etc, they all look ok.

I had the same problem. When I moved my Scala classes to the correct package folder, it worked. Scala does not need this. But only that way Java editor reconized the Scala class.



回答10:

I use Maven to generate my jar. So followed the steps below Right click on project -> Maven -> Update Project -> Check force Update of Snapshots/Releases -> OK



回答11:

Sometimes, or in some versions, you don't see the "Add Scala Nature" option.

Adding it to your .project file manually should do. E.g. this project supports scala and java natures, so it will treat .java as Java, and .scala as Scala.

<projectDescription>
  <name>myprojectname</name>
  <buildSpec>
    <buildCommand>
      <name>org.scala-ide.sdt.core.scalabuilder</name>
    </buildCommand>
  </buildSpec>
  <natures>
    <nature>org.scala-ide.sdt.core.scalanature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
  </natures>
  <linkedResources> </linkedResources>
</projectDescription>