processing / processing/processing4
sketchPath is different on OSX then Windows
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 494
- Forks
- 183
- Avg merge
- 4h 39m
- Merged PRs (30d)
- 3
Description
Created by: clankill3r
Processing 4.3 (and prior)
Windows 10
When working outside the IDE it's common to put the libraries in a lib folder like: (even when not using processing this is common)
The above works fine on OSX, but on windows it does not work.
The reason it breaks on windows: https://github.com/benfry/processing4/blob/main/core/src/processing/core/PApplet.java#L7186
if (jarPath.contains("/lib/")) {
// Windows or Linux, back up a directory to get the executable
folder = new File(jarPath, "../..").getCanonicalPath();
}
It is assumed that core.jar is directly in the lib folder, in the above case sketchPath becomes rootOfProject/lib and dataPath becomes rootOfProject/lib/data.
For now I use this in my sketch:
public void fixSketchPath() {
try {
Field sketchPathField = PApplet.class.getDeclaredField("sketchPath");
sketchPathField.setAccessible(true);
String sketchPath = (String) sketchPathField.get(this);
if (sketchPath.contains("\\lib")) {
int libIndex = sketchPath.indexOf("\\lib");
sketchPath = sketchPath.substring(0, libIndex);
}
sketchPathField.set(this, sketchPath);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
But this is of course more a work around then a fix.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in core/src/processing/core/PApplet.java at the sketchPath logic around the linked line, and compare how jarPath is handled on Windows 10 versus OSX. Reproduce the library-in-a-lib-folder setup and verify that sketchPath points to the project root rather than the lib folder, with dataPath derived from that root.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100