VSCode metals scala, integration tests folder does not see classes - scala

in folder module/src/it I have my integration tests, configured with sbt like in:
https://www.scala-sbt.org/1.x/docs/Testing.html#Integration+Tests
but VSCode with metals shows me that does not see those classes, everything compiles fine with sbt. What can I do with it ? thanks!
edit:
rest of tests, main code etc works fine in vscode, only issue is with it tests folder

Ok looks like bloop does not support it and someone created ticket for them:
https://github.com/scalacenter/bloop/issues/1162

The VS Code plugin uses by default the JAVA_HOME environment variable (via find-java-home) to locate the java executable. Metals only works with Java 8 so this executable cannot point to another version such as Java 11.
https://olafurpg.github.io/metals/docs/editors/vscode.html

Related

How do I use sbt from a Github Codespace terminal where Scala was installed by Metals?

I am new to Scala development and would like to keep it entirely in the cloud. I am looking for the easiest way to get a fully functional workspace in a Github Codespace, including the Metals extension/language server, but also be able to use scala and sbt in the terminal.
So far my approach is to start a codespace with a simple Scala project, including a build.sbt file. Using VSCode Desktop, I connect and install the Metals extension in the codespace. That works just fine and I can now run tests etc from the Metals tab. But I am stuck on how to use scala or sbt directly from the VSCode terminal, the commands themselves are unknown. Clearly Metals uses them under the hood, so they are there in the codespace, but I cannot find the paths in the logs.
Is there a way to find a (non-dynamic) path to the sbt that Metals uses and then alias that in the terminal? Or should I be building the codespace devcontainer with Scala in the first place, something like https://github.com/zenchicken/codespaces-scala? That seems unnecessary when Metals builds everything automatically just fine, based on the standard devcontainer.

Scalatest building and running in Intellij, but not building the project when run on the command line with maven

I'm able to run my tests in a spec file individually when using intellij, however when I try running with Maven on the command line the project will not build with a
java.lang.RuntimeException: Unable to load a Suite class that was
discovered in the runpath: project.uitest.spec.aTestFile
error. I've tried restarting everything I can think of, and it works fine on my coworkers computer that has been running the tests for a long time. The issue reproduces on two other new coworkers environments however.
We tried copying the .m2 folder from the working environment onto the new environment machines however still run into the same issue.
We are using the same version of the JRE, and the scala and scalatest versions are specified in our pom.xml file.
We can also ignore the test that won't load and are able to run the tests.
Any insight or ideas of ways to fix this will be greatly appreciated.
What version of ScalaTest are you using?
ScalaTest Maven Plugin 1.0 doesn't support ScalaTest 3
https://github.com/scalatest/scalatest-maven-plugin/issues/27

Compile and run a netbeans project with terminal

So I created a project in netbeans and then added a new JFrame form (this is my first gui app). I was wondering if there was any way to open the source code in another app like textedit and compile it using terminal (javac blah.java, java blah).
I managed to create a .jar file (clean and build) and it works perfectly fine when I try to run it (double click). Now I managed to find the .java file in src but when I compile it I receive 36 errors, which makes no sense since it built and ran perfectly fine and the jar file works.
Essentially I want to just take the source code (not the entire project) and compile it, for example on a computer that does not have netbeans using terminal. Can this be done?
I would also like to emphasize that I'm just a beginner. Thanks!
Standard NetBeans projects are based on Apache Ant. So it should be sufficient to install Ant and a JDK to compile/package your project on another computer or CI system.
What i found to be the culprit to this problem is that on your source code make sure it does not have package. So for example:
"package blablah"
All you have to do is get rid of that, and then take your java file and it should compile perfectly. For some reason that causes the nodefclass error.

ScalaTest Run Configuration in Eclipse: cannot find Suite Class

Problem: I cannot setup Run Configurations to run scalatest for the Scalatests in my project.
Steps to reproduce:
Right click on Scala Suite and click on Run as -> Run configurations..
On the left, I see a configuration template for ScalaTest. I click on New and fill the Name but it cannot find the suite-class.
Note: It is mentioned here that I should see Run as -> ScalaTest - Suite but I do not see that option. I tried using context menu in the editor, and in the package explorer
Steps taken:
Using: Scala IDE for Eclipse version: 2.1.0.m3-2_09
Using SBT, assemble project, run eclipse command and then import project and dependencies into Eclipse
Project compiles. ScalaTest code compiles(scalatest_2.9.2-1.8.jar is in the 'Referenced Libraries' configuration)
I've been fighting a similar problem for the past few days; Lily / Jimbo's answer didn't quite match my situation, but helped me find the right direction.
In my case, I was using a third-party library that I'd copied in. The package names of the classes and tests matched, but the folder structure did not -- all of my tests were directly in Play's "/test" folder, rather than in folders that matched the package names. This didn't show any errors, but was broken: packages ought to match folders. When I built the right folder structure underneath test, and recompiled, the expected "Run As -> ScalaTest - Suite" options showed up.
Don't know if your problem is the same, but you might check this if you haven't already found the issue...
This could be caused by a misalignment between the scalatest and the scala eclipse IDE version. Try scalatest_2.9.0-2.0.M5b.jar or scalatest_2.10-2.0.M5b.jar. The former jar definitely works with ide 2.0.9.x so maybe the new version needs the 2.10 jar. Pick your version carefully from here
Willem's answer is what worked for me. Getting both plugins from the same update site (from the list on Scalatest's github site), seemed to work for me using Kepler.
for my case, one click on 'Reimport All Maven Projects' icon, like 'Refresh' icon, solved the problem.
Not sure if you fixed the error, but I had similar a error yesterday and was pulling my hair trying to fix it (none of the suggestions I found by googling seemed to help me). So for me, it turns out that it's as easy as package hierarchy in my test suite.
I am using the play framework, so naturally my folders look like this controllers.package1.package2.... and this applies to my test folders also.
Now my test classes however, have the package definition package1.package2..... (no "controllers" as prefix).
If I run the tests on sbt/play command prompt, it's not a problem. But running them through Eclipse would give me the problem you described.
So anyways... thought I'd share this, in case this could help.
it's a bit annoying combined with the view template compile issue in play framework. but my approach is to regenerate the eclipse project file and add view template path into the class path

How to use Scala in IntelliJ IDEA (or: why is it so difficult to get a working IDE for Scala)?

I recently gave up trying to use Scala in Eclipse (basic stuff like completion doesn't work). So now I'm trying IntelliJ. I'm not getting very far.
I've been able to edit programs (within syntax highlighting and completion... yay!). But I'm unable to run even the simplest "Hello World". This was the original error:
Scala signature Predef has wrong version
Expected 5.0
found: 4.1 in .... scala-library.jar
But that was yesterday with IDEA 9.0.1. See below...
UPDATE
Today I uninstalled IntelliJ 9.0.1, and installed 9.0.2 Early Availability, with the 4/14 stable version of the Scala plug-in.
Then I setup a project from scratch through the wizards:
new project from scratch
JDK is 1.6.u20
accept the default (project) instead of global / module
accept the download of Scala 2.8.0beta1 into project's lib folder
Created a new class:
object hello {
def main(args: Array[String]) {
println("hello: " + args);
}
}
For my efforts, I now have a brand-new error :)
Here it is:
Scalac internal error: class java.lang.ClassNotFoundException [java.net.URLClassLoader$1.run(URLClassLoader.java:202), java.security.AccessController.doPrivileged(Native Method), java.net.URLClassLoader.findClass(URLClassLoader.java:190), java.lang.ClassLoader.loadClass(ClassLoader.java:307), sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301), java.lang.ClassLoader.loadClass(ClassLoader.java:248), java.lang.Class.forName0(Native Method), java.lang.Class.forName(Class.java:169), org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java:72)]
FINAL UPDATE
I uninstalled 9.0.2 EA and reinstalled 9.0.1, but this time went with the 2.7.3 version of Scala rather than the default 2.7.6, because 2.7.3 is the one shown in the screen-shots at the IntelliJ website (I guess the screen-shots prove that they actually tested this version!). Now everything works!!!
I have encountered the same scalac error when trying to run a Scala project in Intellij Idea 9.0.2 and I've managed to find a solution by chance :). These are the steps I took in creating the project and running it.
I have created a Scala project in Intellij Idea 9.0.2 final (it was released today). I have installed the Scala plugin, restarted the IDE and created a new Scala project (with the name "TestScala") with scala-2.8.0.Beta1 as project library. Once the project is created and the scala libraries downloaded, I have created a Test.scala file with the following content:
object Test {
def main(args:Array[String]){
println("hello")
}
}
After that, I created a launch configuration ("Edit Configurations"), choosing the "Application" template. I set as main class Test and choose the project name ("TestScala") in the "Use classpath and JDK of module" combo box. When I run the configuration I get the same error as you reported ("Scalac internal error: class java.lang.ClassNotFoundException") .
Now comes the freaky part :). I right click on the project, choose "Module Settings", have a look on all settings but I don't change anything . Click "apply" and "ok", try to run configuration again and it works :) .
I use Intellij Idea 9.0.2 the final release (build 95-66); Ubuntu 9.10 and JDK 1.6.0_18. I also have to mention that I had a JDK configured in Intellij, otherwise there is an extra step to configure it.
UPDATE:
When checking the setting of the module, one needs to click on the Module->Scala and Facets->Scala (expand it and click on Scala(ProjectName)) . Both of these settings are about the scala compiler and scala library location. I would guess these values are not properly set when the project is created but are saved once the user touches them and saves the settings.
To answer your question, it's difficult to get a working IDE for Scala for two reasons:
(a) Scala is only just beginning to reach a wide audience and
(b) due to (a), there is no business case for spending time on a Scala IDE.
Also, if you are old enough to cast your mind back and young enough to still remember, you would know that for the first five or more years of Java, we were stuck with okay-ish tools like JBuilder that did little more than compile your code when you said so - no error highlighting, no auto-importing, and the word refactoring didn't even exist. If you want to pioneer, you need to be prepared to cut some of the road yourself, or at least bush-bash.
I know it won't help you, but I have successfully used IDEA for Scala on Linux, Mac and Windows. I typically have the Scala SDK installed somewhere locally and point IDEA at that rather than using the 'download' option.
Presently, I am mostly using an EAP version of IDEA 9 on Mac OS X with Scala 2.8.0.Beta1-RC5 and it's working well (except that fsc doesn't seem to worked with mixed sources).
You could try your luck over at the IDEA Scala Plugin Discussion Forum, though I haven't had a great lot of responses to my own postings there.
Installing the plug-in is prerequisite one.
The next thing you should do is define a library (global or project-specific; I use global) that holds the Scala library and compiler JAR files (at a minimum, that's scala-compiler.jar and scala-library.jar). Adding source JARs and a documentation JAR or URLs is a good idea, too. Then make this library a dependency of any modules in your project that include Scala code.
Lastly, find the Scala facets in those modules and de-select both check-boxes there.
I just did a fresh install and had exactly this same problem myself.
It turned out that, because I had created the file in the root package, IDEA had added a package statement at the top with naming a package. I assume that this then got compiled as "package object Main" - valid syntax in 2.8? Anyway, I deleted the line that said package and it all worked fine.
I had the same problem yesterday while trying to set it up. Solution is pretty simple, you just have to set scala somewhere in project settings.
You are mixing code compiled with two different Scala versions.
I use Netbeans to write scala programs. So far it works very well with my codes. You can try the plugin here: http://wiki.netbeans.org/Scala68v1.
I was getting this error and also had to right click on the project and "Open Module Settings". However, it was more than just hitting apply. I had to make sure that my Content Root was correct for each project. For some reason, there were some incorrect Source and Test Folders.
My project uses maven as the main build tool and importing the project into Intellij is probably what created these incorrect settings.
I had similar problem, following this blog post instructions solved the problem for me