Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Audio annunciator unable to use audio files which have a space in their path

Open
#3,992 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@LordIdra is already working on this.

Since Oct 27, 2026.

  • #3993 by @LordIdra — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
java

Research direction

Start in AudioAnnunciator.java at createMediaPlayer, which the stack trace identifies as the point where JavaFX Media receives the file URL. Read the related issues #3142 and #3058 for context, then check how a path containing spaces is handled. Done when the annunciator can create a MediaPlayer for the reported path; linked pull request #3993 is already open.

Written by the indexing model from the issue text.

Description

OS: windows

Stack trace:

SEVERE [org.phoebus.applications.alarm.audio.annunciator.AudioAnnunciator] Failed to create MediaPlayer for URL: file:/C:/Users/kdt41815/Documents/Audacity/some test/alarm-undefined.wav
java.lang.IllegalArgumentException: java.net.URISyntaxException: Illegal character in path at index 47: file:/C:/Users/kdt41815/Documents/Audacity/some test/alarm-undefined.wav
        at javafx.scene.media.Media.<init>(Media.java:384)
        at org.phoebus.applications.alarm.audio.annunciator.AudioAnnunciator.createMediaPlayer(AudioAnnunciator.java:62)
        at org.phoebus.applications.alarm.audio.annunciator.AudioAnnunciator.<init>(AudioAnnunciator.java:43)
        at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
        at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:707)
        at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:672)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)
        at java.base/java.util.ServiceLoader$ProviderSpliterator.tryAdvance(ServiceLoader.java:1352)
        at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorController.<init>(AnnunciatorController.java:68)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTable.<init>(AnnunciatorTable.java:245)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableInstance.create(AnnunciatorTableInstance.java:80)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableInstance.<init>(AnnunciatorTableInstance.java:49)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableApplication.create(AnnunciatorTableApplication.java:69)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableApplication.create(AnnunciatorTableApplication.java:61)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableApplication.create(AnnunciatorTableApplication.java:31)
        at org.phoebus.framework.workbench.ApplicationService.createInstance(ApplicationService.java:152)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableMenuEntry.call(AnnunciatorTableMenuEntry.java:26)
        at org.phoebus.applications.alarm.ui.annunciator.AnnunciatorTableMenuEntry.call(AnnunciatorTableMenuEntry.java:20)
        at org.phoebus.ui.application.PhoebusApplication.lambda$createMenuItem$0(PhoebusApplication.java:867)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
        at javafx.event.Event.fireEvent(Event.java:199)
        at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
        at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1426)
        at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$6(ContextMenuContent.java:1379)
        at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
        at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
        at javafx.event.Event.fireEvent(Event.java:199)
        at javafx.scene.Scene$MouseHandler.process(Scene.java:4061)
        at javafx.scene.Scene.processMouseEvent(Scene.java:1947)
        at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2784)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.get(GlassViewEventHandler.java:353)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.get(GlassViewEventHandler.java:255)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
        at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
        at com.sun.glass.ui.View.handleMouseEvent(View.java:573)
        at com.sun.glass.ui.View.notifyMouse(View.java:975)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$runLoop$0(WinApplication.java:173)
        at java.base/java.lang.Thread.run(Thread.java:1527)
Caused by: java.net.URISyntaxException: Illegal character in path at index 47: file:/C:/Users/kdt41815/Documents/Audacity/some test/alarm-undefined.wav
        at java.base/java.net.URI$Parser.fail(URI.java:3008)
        at java.base/java.net.URI$Parser.checkChars(URI.java:3179)
        at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3261)
        at java.base/java.net.URI$Parser.parse(URI.java:3209)
        at java.base/java.net.URI.<init>(URI.java:651)
        at javafx.scene.media.Media.<init>(Media.java:382)
        ... 65 more

related: https://github.com/ControlSystemStudio/phoebus/issues/3142
also related: https://github.com/ControlSystemStudio/phoebus/issues/3058

Dominant language
Java
Stars
130
Forks
132
Avg merge
2d 11h
Merged PRs (30d)
23

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ControlSystemStudio/phoebus

All issues in ControlSystemStudio/phoebus

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.