Recommended Free Tools
Error: Unable to access jarfile <name>.jar means the Java launcher could not open the exact file named after -jar. Java has started, so reinstalling Java is usually not the first fix. Check the command, working directory, filename, quoting, permissions, and file integrity in that order.
For example, if you run java -jar server.jar, Java looks for server.jar in the process’s current directory. Either change into the directory that contains the file or provide the correct absolute path.
As an Amazon Associate I earn from qualifying purchases.
What “Unable to access jarfile” actually means
The Java launcher receives a JAR filename after the -jar option and tries to open it. This error is emitted when that open operation fails. The failure happens before Java can start the application’s classes, read its main class, or run application code.
That distinction narrows the diagnosis. If Java prints this exact message, begin with the file system and process environment. Do not start by changing the application’s code, classpath, heap settings, or server configuration. Those matter only after Java can open the archive.
A command such as java -jar server.jar contains a relative path. Relative paths are resolved from the current working directory of the process that launched Java, not necessarily from the folder where the command file, script, or JAR is stored. An interactive terminal, a scheduled task, a service, a container, and a game-server panel can all start in different directories.
Use this diagnostic sequence first
- Print or copy the exact command. Preserve the JAR argument exactly, including capitalization, punctuation, version suffixes, and the
.jarextension. Look for a copied command that still names an older release. - Confirm the current directory. On Linux or macOS, run
pwd. In PowerShell, runGet-Location; in Command Prompt, runcd. Compare that location with the directory that actually contains the JAR. - List the candidate files. On Linux or macOS, run
ls -la /path/to/*.jar. On Windows, useGet-ChildItemordirin the target folder. Verify the exact spelling rather than relying on a visual approximation. - Correct the path. Change to the JAR’s directory and run the command there, or replace the relative name with the correct absolute path.
- Quote paths containing spaces. Put the entire path in quotation marks so the shell passes it as one argument.
- Check access for the launching account. Confirm that the account running Java can read the file and traverse every parent directory.
- Check the artifact itself. A zero-byte, truncated, or incomplete download or upload must be obtained again from the original source.
- Only after access succeeds, investigate build layout and dependencies. A later error such as
Unable to find or load main classbelongs to class resolution, not file access.
Fix the path and working directory
Relative paths
Suppose the file is at /srv/game/server.jar. Running java -jar server.jar from /home/admin makes Java search in /home/admin, so the command fails even though the file exists elsewhere. Use either of these forms:
cd /srv/game
java -jar server.jar
or:
java -jar /srv/game/server.jar
The second form avoids dependence on the caller’s current directory. It is generally safer for service definitions, cron jobs, container entrypoints, and scripts that may be invoked from several locations.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Linux and macOS checks
- Run
pwdand record the directory printed. - Run
ls -lto inspect files in that directory. - If you expect the JAR elsewhere, run
ls -la /path/to/*.jarusing the directory you believe contains it. - Run
ls -ld /pathand repeat for each parent directory when you need to inspect traversal permissions. - Launch with the verified absolute path, for example
java -jar "/opt/My App/server.jar"when the directory name contains a space.
Case is significant on typical Linux file systems. Server.jar, server.jar, and SERVER.JAR can be different names. A command copied from a guide may also refer to a generic filename while your downloaded artifact has a version suffix.
Windows PowerShell and Command Prompt
- In PowerShell, run
Get-Location. In Command Prompt, runcd. - Run
Get-ChildItemordirto display the exact filename. - Change into the directory with
cd "C:pathtofolder", then runjava -jar server.jar, or provide the complete path directly. - Quote a path such as
"C:Program FilesMy Appserver.jar".
Windows Explorer can hide known extensions. A file displayed as server.jar may actually be named server.jar.jar if an extension was added twice. Use dir or Get-ChildItem to see the name that the command interpreter receives.
Make sure the filename is exactly correct
Compare the command character by character with the directory listing. Common mismatches include:
Rank #2
Server.jarin the folder butserver.jarin the command.- A release suffix such as
server-1.20.6.jarwhile the startup command still saysserver.jar. - A typo in the extension, including
.jar.jaror a missing.jar. - A file left in a downloads, build, or upload directory while the command points to an older deployment directory.
- A symbolic link or shortcut whose target was moved or deleted.
Renaming the file to match the configured command can work, but changing the command to match the actual artifact is often safer when other scripts or manifests refer to the existing name. Whichever option you choose, use one spelling consistently in scripts, service definitions, panels, and documentation.
Quote paths that contain spaces
Shells split unquoted input at spaces. This command does not pass one filename to Java:
java -jar /opt/My App/server.jar
The shell instead supplies separate arguments for /opt/My and App/server.jar. Quote the complete path:
java -jar "/opt/My App/server.jar"
Use the same principle on Windows:
java -jar "C:Program FilesMy Appserver.jar"
When a script builds the path from variables, quote the variable expansion at the point where it is passed to Java. Also check for leading or trailing spaces accidentally included in a configured filename.
Check permissions without weakening security
The account that launches Java needs permission to read the JAR. It also needs traversal (execute) permission on every parent directory in the path. A file can appear in a directory listing for an administrator and still be inaccessible to a service account.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Linux and macOS
Use ls -l /path/to/server.jar to inspect the file and ls -ld on each parent directory to inspect traversal permissions. Identify the account used by the service, scheduled task, container, or shell before changing anything. Test access as that account where your operating system policy permits it.
Do not make a broad recursive change or run the process as root merely to silence the error. Grant the narrow read and directory-traversal permissions required by the launcher, then retry with the same account that will run the application in production.
Windows
Check which user or service identity starts Java, then inspect the file and folder security permissions for that identity. A file copied into a personal profile may be readable interactively but unavailable to a service running under another account. Moving the artifact to an approved application directory and granting that account the required read access is preferable to granting unrestricted access across the drive.
Verify that the JAR was downloaded or uploaded completely
A path can be correct and readable while the artifact is still unusable. Check the file size and timestamp in the directory listing. A zero-byte file, a partial transfer, or an interrupted upload should be downloaded or uploaded again from the original source.
Free tools Windows power users keep installed
One-click scans. No signup required.
Do not confuse two launcher diagnoses:
| Message | What Java managed to do | First action |
|---|---|---|
Unable to access jarfile |
It could not open the named path. | Check location, spelling, quoting, permissions, and file presence. |
Invalid or corrupt jarfile |
It opened the file but could not treat it as a valid archive. | Obtain a complete, undamaged artifact again. |
Unable to find or load main class |
It got past file access but could not resolve the requested class or classpath. | Inspect the main class, classpath, manifest, and build output. |
java: command not found or an unrecognized java command |
The launcher itself is unavailable on PATH. |
Fix the Java installation or environment separately. |
If the message changes from “unable to access” to “invalid or corrupt,” your path and permissions work; focus on obtaining a valid archive instead of reverting those fixes.
Account for services, scheduled tasks, containers, and panels
Interactive testing can be misleading because your terminal starts in a familiar directory and uses your own account. A background process may start elsewhere with a different environment.
- Service definitions: Set an explicit working directory or use an absolute JAR path. Confirm the service account can traverse the directory tree.
- Cron and other schedulers: Do not assume the scheduler inherits the directory from your shell. Use an absolute path or change directory in the command before invoking Java.
- Containers: Verify that the JAR is present inside the running container at the path used by the entrypoint. A file on the host is not automatically present at the same path in the container.
- Batch files and scripts: Print the resolved path immediately before the Java command when debugging. This exposes variables that expand to an empty, stale, or differently cased filename.
- Managed game-server panels: Locate the startup-command setting and make its JAR value match the uploaded file exactly, including capitalization and version suffix. Confirm that the upload completed in the panel’s file manager.
For WebLogic deployments, Oracle’s troubleshooting table gives the same practical principle: “Make sure that you have issued the command from within the MW_HOME/wlserver_10.3/server/lib/ directory.” The directory requirement is the important part: invoke the launcher from the location expected by the deployment or provide an equivalent absolute path.
Rank #4
Preserve build output and dependency layout
Build tools often produce a deployment directory rather than placing every file beside the source project. Oracle’s Java project documentation describes a standard NetBeans deployment in which dependent JARs are copied to dist/lib and listed in the application’s manifest Class-Path. If you copy only the main JAR or move it away from that generated layout, the initial access error may be replaced by a dependency or class-loading failure.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsWhen a build has generated an output directory, inspect it before moving files:
- Identify the main artifact’s exact filename.
- Keep the generated
libdirectory beside it when the manifest expects that layout. - Launch the artifact from the deployment directory, or update the launch path to the actual output location.
- Do not rename or relocate dependent files unless you also update the manifest or the command that supplies the classpath.
This is a separate stage from the access check. First make sure Java can open the main JAR; then address dependencies if the next diagnostic names a missing class.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Minecraft and other managed game servers
Game-server panels frequently expose a configurable JAR name in their startup settings. The panel’s value must match the uploaded file exactly. A common failure is uploading a versioned JAR while leaving a generic startup value, or replacing a file without updating the panel’s setting.
- Open the panel’s file manager and record the exact uploaded filename.
- Check that the upload has finished and that the file has a nonzero size.
- Open the startup or launch-command setting.
- Change only the JAR filename or path needed to match the uploaded artifact, including capitalization and version suffix.
- Start the server again and read the first launcher message.
If the message remains “unable to access jarfile,” continue checking the panel’s working directory and the account used by its service. Reinstalling Java is not the first response when Java already starts and prints this specific access error.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Choose between a relative and an absolute path
| Situation | Prefer | Reason |
|---|---|---|
| Testing manually in the JAR’s directory | Relative path such as java -jar server.jar |
Short and convenient while the working directory is known. |
| Service, cron job, container entrypoint, or scheduled task | Absolute path such as java -jar /srv/game/server.jar |
Avoids failures caused by an unexpected starting directory. |
| Path includes spaces | Quoted relative or absolute path | Prevents the shell from splitting one filename into multiple arguments. |
| Build with generated dependencies | The generated deployment layout | Preserves the main JAR, lib directory, and manifest relationships. |
Recovery playbooks for common cases
The file is in another folder
Run pwd or Get-Location, list the directory, locate the JAR, and either change into that folder or use its absolute path. Retry before changing anything else.
Best Value
The command uses the wrong case or version
Copy the filename directly from ls, dir, or Get-ChildItem. Replace the stale command value, then retry. On case-sensitive systems, do not assume differently capitalized names are equivalent.
The path contains spaces
Enclose the complete path in quotation marks. If the command is generated by a script or panel, inspect the final expanded command rather than only the template.
The service account cannot read the file
Identify the account, inspect file and parent-directory permissions, and grant the minimum required read and traversal access. Avoid running the service with administrator or root privileges as a blanket workaround.
The transfer was interrupted
Compare the file size and timestamp with the expected artifact, then repeat the download or upload. Once Java reports “invalid or corrupt jarfile,” continue with artifact-integrity checks rather than path changes.
The build produced a separate deployment directory
Launch the JAR from the generated output directory and keep its dependent lib directory in place when the manifest references it. Moving only the main file can create a different class-loading error after access is fixed.
When Java itself is the problem
Unable to access jarfile demonstrates that a Java launcher was invoked and processed the -jar option. That is different from java: command not found or an unrecognized java command, which indicates that the launcher is unavailable on PATH or is not installed for that environment.
If the command is unrecognized, fix the Java installation or environment first. If Java prints the JAR access error, keep the investigation focused on the named path, file permissions, process directory, and artifact completeness.
Quick Recap
Final verification checklist
- The command contains the intended JAR name and extension.
- The process’s current directory is known, or the command uses a verified absolute path.
- The file exists under the exact spelling and capitalization used by the command.
- Paths containing spaces are quoted as one argument.
- The launching account can read the file and traverse every parent directory.
- The download or upload completed and the file is not zero bytes or truncated.
- A service, scheduler, container, or panel uses the same path and account you tested.
- Generated build output retains the expected
libdirectory and manifest relationships. - Any new error is interpreted according to its message instead of being treated as the original access failure.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

