Idea plugin: java.lang.NoSuchMethodError(s)

I’m seeing a couple of errors in PyCharm 2024.3, Build #PY-243.21565.199 using the Plastic SCM Integration plugin from Unity DevOps Version Control 11.0.16.9009 on MacOS 13.7.1.

java.lang.NoSuchMethodError: 'java.lang.String com.intellij.util.SystemProperties.getLineSeparator()'
	at com.codicesoftware.intellij.actions.utils.ActionUtils.bytesToString(ActionUtils.java:247)
	at com.codicesoftware.intellij.application.PlasticContentRevision.getContent(PlasticContentRevision.java:84)
	at com.intellij.openapi.vcs.impl.LineStatusTrackerBaseContentUtil.loadContentRevision(LineStatusTrackerBaseContentUtil.java:197)
	at com.intellij.openapi.vcs.impl.LineStatusTrackerBaseContentUtil$BaseContentImpl.loadContent(LineStatusTrackerBaseContentUtil.java:147)
	at com.intellij.openapi.vcs.impl.BaseRevisionStatusTrackerContentLoader.loadContent(LineStatusTrackerManager.kt:1455)
	at com.intellij.openapi.vcs.impl.LineStatusTrackerManager$MyBaseRevisionLoader.loadRequest(LineStatusTrackerManager.kt:557)
	at com.intellij.openapi.vcs.impl.LineStatusTrackerManager$MyBaseRevisionLoader.loadRequest(LineStatusTrackerManager.kt:515)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader.handleSingleRequest(LineStatusTrackerManager.kt:1314)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader.handleRequests(LineStatusTrackerManager.kt:1308)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader.access$handleRequests(LineStatusTrackerManager.kt:1188)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader$schedule$1$1$1.invokeSuspend$lambda$0(LineStatusTrackerManager.kt:1287)
	at com.intellij.openapi.progress.CoroutinesKt.jobToIndicator$lambda$5(coroutines.kt:447)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:98)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:223)
	at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:45)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:222)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:674)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:749)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:705)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:673)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:203)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:98)
	at com.intellij.openapi.progress.CoroutinesKt.jobToIndicator(coroutines.kt:435)
	at com.intellij.openapi.progress.CoroutinesKt.contextToIndicator(coroutines.kt:427)
	at com.intellij.openapi.progress.CoroutinesKt.coroutineToIndicator(coroutines.kt:371)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader$schedule$1$1$1.invokeSuspend(LineStatusTrackerManager.kt:1286)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader$schedule$1$1$1.invoke(LineStatusTrackerManager.kt)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader$schedule$1$1$1.invoke(LineStatusTrackerManager.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:62)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:163)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.intellij.openapi.vcs.impl.SingleThreadLoader$schedule$1$1.invokeSuspend(LineStatusTrackerManager.kt:1285)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:608)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:873)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:763)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:750)
java.lang.NoSuchMethodError: 'java.lang.String com.intellij.util.SystemProperties.getLineSeparator()'
	at com.codicesoftware.intellij.actions.utils.ActionUtils.bytesToString(ActionUtils.java:247)
	at com.codicesoftware.intellij.application.PlasticContentRevision.getContent(PlasticContentRevision.java:84)
	at com.intellij.openapi.vcs.changes.actions.diff.ChangeDiffRequestProducer.createContent(ChangeDiffRequestProducer.java:425)
	at com.intellij.openapi.vcs.changes.actions.diff.ChangeDiffRequestProducer.createSimpleRequest(ChangeDiffRequestProducer.java:337)
	at com.intellij.openapi.vcs.changes.actions.diff.ChangeDiffRequestProducer.createRequest(ChangeDiffRequestProducer.java:259)
	at com.intellij.openapi.vcs.changes.actions.diff.ChangeDiffRequestProducer.loadCurrentContents(ChangeDiffRequestProducer.java:217)
	at com.intellij.openapi.vcs.changes.actions.diff.ChangeDiffRequestProducer.process(ChangeDiffRequestProducer.java:179)
	at com.intellij.diff.impl.CacheDiffRequestProcessor$Simple.loadRequest(CacheDiffRequestProcessor.java:246)
	at com.intellij.diff.impl.CacheDiffRequestProcessor$Simple.loadRequest(CacheDiffRequestProcessor.java:223)
	at com.intellij.diff.impl.CacheDiffRequestProcessor.doLoadRequest(CacheDiffRequestProcessor.java:176)
	at com.intellij.diff.impl.CacheDiffRequestProcessor.lambda$updateRequest$1(CacheDiffRequestProcessor.java:129)
	at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$computeInBackgroundAndTryWait$6(BackgroundTaskUtil.java:164)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:223)
	at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:45)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:222)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:674)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:749)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:705)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:673)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:203)
	at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$computeInBackgroundAndTryWait$7(BackgroundTaskUtil.java:163)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport$executeOnPooledThread$1.run(AnyThreadWriteThreadingSupport.kt:167)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
	at com.intellij.util.concurrency.ContextCallable.lambda$call$1(ContextCallable.java:74)
	at com.intellij.util.concurrency.ContextCallable.call(ContextCallable.java:83)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
	at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
	at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:107)
	at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:101)
	at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:735)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:732)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:732)
	at java.base/java.lang.Thread.run(Thread.java:1583)

That seems to be a Java issue, have you got the correct Java version installed, and does it import the correct aspects as mentioned. I dont believe this is an issue that Oracle can fix, but it seems to be an import issue.

I don’t think I fully understand. Why would I have to worry about installing versions of Java?

Both PyCharm and Plastic SCM are final produces that I’m the end user of. I don’t think I should have to manage language(s) they are built in. My development projects are all in Python.

Also, PyCharm is reporting this as an error that occurs in the Plastic SCM plugin:

As a general safety net, installing Java would be helpful as it is highly unlikely Python would have Java install directly to your device. It may contain little aspects of it sure, but the package they are requesting may be part of Java.util which is base Java, Oracle are quite annoying on their tech support, I had to guide them through errors before…dont ask, Python is its own programming language based on C++ and C# (hence why it works well with Unity which is coded in C++) Java however is a pain… So if in doubt, download Java and go from there

As a general safety net, installing Java would be helpful as it is highly unlikely Python would have Java install directly to your device.

Okay, but I’m talking about a Unity plugin written for all Jetbrains IDEs, which are themselves written in Java. I think the story would be the same if I were working in PhpStorm, RustRover, IntelliJ IDEA, etc.

Jetbrains says that I don’t need to install Java to run PyCharm:

You do not need to install Java to run PyCharm because JetBrains Runtime is bundled with the IDE (based on JRE 17).

Taken from Install PyCharm | PyCharm Documentation

If I install Java myself, would PyCharm continue to run off it’s bundled JRE? I’m really not familiar with how the Java ecosystem works.

Also, isn’t this still a bug on Unity’s side because the error is coming from the Plastic SCM plugin? The plugin is a file called plastic4idea.jar, so I’m assuming that is Java code coming from Unity.

General rule of thumb: and no offense to anyone who works for Jetbrains… If you want to work with a computer language, install its environment (IDE and it itself) Java/Oracle will not allow any third party to freely install their software… they are not just a pain in the… but idiots too, the bundled JRE (Java Runtime Environment) is a version in unity terms Unity 2022.3.21lt (I dont care to look at official name) is a Runtime Environment, any future updates (if they are good devs) should consider the backdated environments. SO in theory Unity6 should have all the features of Unity2022 BUT improve on it too.

As is same with Java, I had to ask Oracle support to very quickly, update my work to the correct JRE because their messages are annoying. In short. If In doubt, download the environments used by your product (in your instance PyCharm) at best it works, at worst nothing changes but you are protected.

all in all… avoid Python, it is poor at best

Hi,

The issue was not able to reproduce under the conditions below:

UVCS Version: 11.0.16.9039
PyCharm: 2024.3 PY-243.21565.199
Mac OS: Sequoia 15.1

Does a particular operation occurs the issue on your end? If so, please share the steps that cause the error.

Does a particular operation occurs the issue on your end? If so, please share the steps that cause the error.

Ah, I’ve noticed that it is most likely to happen if a file has changes that I have not checked in and I restart the IDE. So I guess the sequence of events would be:

  1. Check in all changes to Plastic SCM
  2. Modify a file
  3. Quit PyCharm
  4. Open PyCharm, the error should appear after the Plastic SCM File Watcher is fully started

Note: it seems like I also have to have the Plastic SCM GUI running as well. If I don’t have that running, then the Idea plugin doesn’t properly show the file as changed (highlight in blue in the IDE), and the error does not appear.

Hi,

Thank you @gracesona.
The issue was reproduced with the steps given. A ticket will be created for the relevant team.
Unfortunately, there’s no estimated time to resolve the issue.

When the fix is available, this discussion will be updated.

Cheers,
Cindy