Skip to content

Failing exiftool path lookup procedure – "Error: File not found - where" [Windows] #183

@xax

Description

@xax

Version info

  • OS: Windows 10 build 19044
  • Package: jar (OpenJDK 11.0.10)

Bug descripton
jExifTool does not find exiftool, which is findable via a correctly set up PATH entry. Thus jExifTool cancels startup with a ”Erroneous ExifTool preference – The ExifTool specified in your preferences does not exist. Did you move/rename/delete it??“ dialog. (German translation is dubiuous, btw. And why two ”?“ in the English string?)

The culprit seems to be the way jExifTool tries to determine the location of exiftool, which seems to be somehow launching a where exiftool command. Note the java.io.IOException: CreateProcess error=2 and Cannot run program ""Error: File not found - where"" log items;

[…]
11:14:08.899 [AWT-EventQueue-0] ERROR o.h.j.controllers.UpdateActions - Successfully did: creating the table CustomMetadatasetLines (1.6)
11:14:09.124 [AWT-EventQueue-0] INFO  org.hvdw.jexiftoolgui.mainScreen - OS name MICROSOFT
11:14:09.132 [AWT-EventQueue-0] ERROR o.h.j.controllers.CommandRunner - IOException error {}
java.io.IOException: Cannot run program ""Error: File not found - where"": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
        at org.hvdw.jexiftoolgui.controllers.CommandRunner.runCommand(CommandRunner.java:115)
        at org.hvdw.jexiftoolgui.mainScreen.setProgramScreenTexts(mainScreen.java:3842)
        at org.hvdw.jexiftoolgui.mainScreen.<init>(mainScreen.java:3977)
        at org.hvdw.jexiftoolgui.mainScreen.createAndShowGUI(mainScreen.java:4024)
        at org.hvdw.jexiftoolgui.Application$$Lambda$135/0x0000000000000000.run(Unknown Source)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:708)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
        at java.base/java.lang.ProcessImpl.create(Native Method)
        at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:478)
        at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:154)
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
        ... 19 common frames omitted
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "IOException error
Cannot run program ""Error: File not found - where"": CreateProcess error=2, Das System kann die angegebene Datei nicht finden"
        at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
        at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
        at java.base/java.lang.Float.parseFloat(Float.java:455)
        at org.hvdw.jexiftoolgui.mainScreen.setProgramScreenTexts(mainScreen.java:3848)
        at org.hvdw.jexiftoolgui.mainScreen.<init>(mainScreen.java:3977)
        at org.hvdw.jexiftoolgui.mainScreen.createAndShowGUI(mainScreen.java:4024)
        at org.hvdw.jexiftoolgui.Application$$Lambda$135/0x0000000000000000.run(Unknown Source)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:708)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

My system has a standard COMSPEC set to %SystemRoot%\system32\cmd.exe; to use the traditional where command from PowerShell, though, I have to type where.exe to differentiate between the alias of the Where-Object Cmdlet and the legacy %SystemRoot%\system32\where.exe – if that might be an issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    FixedbugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions