"Error: File Not Found" in Ubuntu 18.04 LTS - java

So my Ubuntu terminal is claiming that the java file I'm trying to run does not exist. However, it clearly does, and it looks like I'm in the right directory. Here's what I'm trying to compile
And here's what happens
Can anybody help me with this?

If you are sure that you are in the right directory, BE SURE that you write the filename Exactly as what it is. Because Linux is case sensitive and for example, if you have a file with name "Sample" and you try to open "sample" file, you will get the error.
if you type manually, try to use Tab button in your keyboard. it will auto-Complete the file/dir name for you. With this way, if you have typo or wrong spelling, Tab does not complete the name and you will know that there is something wrong with what you type in terminal.

Another comment suggested that I use "ls" to see if the terminal can see the file. I got a permission denied error, and used
find . -type d -exec chmod 755 {} \;
to resolve this.

Related

Java directory pathway

I wanted to start learning Java but I am a bit confused as to how to set the path correctly. I want to make a directory in my home directory for all my java programs so I was thinking something like:
/home/user/Java_Projects
but I'm not sure how to make the symbolic link to it. Would it be something like this?:
ln -sf /usr/local/jdk-11/bin/java /usr/local/bin/java/Java_Projects
Also, in this case what happens with javac? Does it then become:
ln -sf /usr/local/jdk-11/bin/javac /usr/local/bin/javac/Java_Projects
A strange thing that I've noticed is that when I run the code in my home directory (/home/user) everything works fine but then when I try to run the code from my java directory by changing to /home/user/Java_Projects it won't work anymore and I have no idea why.
The only thing I can think of is some kind of permission error because this is what I get:
error: error while writing HelloWorld: /home/user/Java_Projects/HelloWorld.class
Thanks in advance!
You're confusing the JDK tools (java, javac, etc) with the coding side. You will need to add /usr/local/jdk-11/bin to your PATH environment variable. Since you're in a Unix based environment you'll want to add that in your .bashrc or the equivalent for your shell. Something like:
export PATH=/usr/local/jdk-11/bin:$PATH
You normally have to start a new shell (i.e. the command line window) or log out and back in for that to take effect. Then, in your Java_projects directory you can simply run:
javac HelloWorld.java
You should have write permission in the Java_projects already assuming that it's in your home directory. If not, run chmod 755 Java_projects from the /home/user directory. The user in this case should be your login name to the operating system.

Code runs but doesn't open when converted to .jar file? [duplicate]

I want to execute my program without using an IDE.
I've created a jar file and an exectuable jar file. When
I double click the exe jar file, nothing happens, and when I try to use the command in cmd it gives me this:
Error: Unable to access jarfile <path>
I use the command: java -jar Calculator.jar
How I created the jar:
Right click on project folder (Calculator)
Select
Click on Java Folder and select "Exectuable Jar File", then select next
Launch Configuration: Main - Calculator
Create Export Destination
Hit "Finish" and profit! Well, not really.
I had encountered this issue when I had run my Jar file as
java -jar TestJar
instead of
java -jar TestJar.jar
Missing the extension .jar also causes this issue.
Fixed
I just placed it in a different folder and it worked.
[Possibly Windows only]
Beware of spaces in the path, even when your jar is in the current working directory. For example, for me this was failing:
java -jar myjar.jar
I was able to fix this by givng the full, quoted path to the jar:
java -jar "%~dp0\myjar.jar"
Credit goes to this answer for setting me on the right path....
I had this issue under CygWin in Windows. I have read elsewhere that Java does not understand the CygWin paths (/cygdrive/c/some/dir instead of C:\some\dir) - so I used a relative path instead: ../../some/dir/sbt-launch.jar.
I had the same issue when trying to launch the jar file. The path contained a space, so I had to place quotes around. Instead of:
java -jar C:\Path to File\myJar.jar
i had to write
java -jar "C:\Path to File\myJar.jar"
Just came across the same problem trying to make a bad USB...
I tried to run this command in admin cmd
java -jar c:\fw\ducky\duckencode.jar -I c:\fw\ducky\HelloWorld.txt -o c:\fw\ducky\inject.bin
But got this error:
Error: unable to access jarfile c:\fw\ducky\duckencode.jar
Solution
1st step
Right click the jarfile in question. Click properties.
Click the unblock tab in bottom right corner.
The file was blocked, because it was downloaded and not created on my PC.
2nd step
In the cmd I changed the directory to where the jar file is located.
cd C:\fw\ducky\
Then I typed dir and saw the file was named duckencode.jar.jar
So in cmd I changed the original command to reference the file with .jar.jar
java -jar c:\fw\ducky\duckencode.jar.jar -I c:\fw\ducky\HelloWorld.txt -o c:\fw\ducky\inject.bin
That command executed without error messages and the inject.bin I was trying to create was now located in the directory.
Hope this helps.
None of the provided answers worked for me on macOS 11 Big Sur. The problem turned out to be that programs require special permission to access the Desktop, Documents, and Downloads folders, and Java breaks both the exception for directly opened files and the permission request popup.
Fixes:
Move the .jar into a folder that isn’t (and isn’t under) Documents, Desktop, or Downloads.
Manually grant the permission. Go to System Preferences → Security and Privacy → Privacy → Files and Folders → java, and check the appropriate folders.
I had a similar problem and I even tried running my CMD with administrator rights, but it did not solve the problem.
The basic thing is to make sure to change the Directory in cmd to the current directory where your jar file is.
Do the following steps:
Copy jar file to Desktop.
Run CMD
Type command cd desktop
Then type java -jar filename.jar
This should work.
Edit: From JDK-11 onwards ( JEP 330: Launch Single-File Source-Code Programs )
Since Java 11, java command line tool has been able to run a single-file source-code directly. e.g.
java filename.java
If you are using OSX, downloaded files are tagged with a security flag that prevents unsigned applications from running.
to check this you can view extended attributes on the file
$ ls -l#
-rw-r--r--# 1 dave staff 17663235 13 Oct 11:08 server-0.28.2-java8.jar
com.apple.metadata:kMDItemWhereFroms 619
com.apple.quarantine 68
You can then clear the attributes with
xattr -c file.jar
It can also happen if you don't properly supply your list of parameters. Here's what I was doing:
java -jar test#gmail.com testing_subject file.txt test_send_emails.jar
Instead of the correct version:
java -jar test_send_emails.jar test#gmail.com testing_subject file.txt
This worked for me.
cd /path/to/the/jar/
java -jar ./Calculator.jar
For me it happens if you use native Polish chars in foldername that is in the PATH.
So maybe using untypical chars was the reason of the problem.
sometime it happens when you try to (run or create) a .jar file under /libs folder by right click it in android studio. you can select the dropdown in top of android stuio and change it to app. This will work
My particular issue was caused because I was working with directories that involved symbolic links (shortcuts). Consequently, trying java -jar ../../myJar.jar didn't work because I wasn't where I thought I was.
Disregarding relative file paths fixed it right up.
In my case the suggested file name to be used was jarFile*.jar in the command line. The file in the folder was jarFile-1.2.3.jar . So I renamed the file to jarFile. Then I used jarFile.jar instead of jarFile*.jar and then the problem got resolved
It can happen on a windows machine when you have spaces in the names of the folder. The solution would be to enter the path between " ".
For example:
java -jar c:\my folder\x.jar -->
java -jar "c:\my folder\x.jar"
To avoid any permission issues, try to run it as administrator. This worked for me on Win10.
I know this thread is years ago and issue was fixed too. But I hope this would helps someone else in future since I've encountered some similar issues while I tried to install Oracle WebLogic 12c and Oracle OFR in which its installer is in .jar format. For mine case, it was either didn't wrap the JDK directory in quotes or simply typo.
Run Command Prompt as administrator and execute the command in this format. Double check the sentence if there is typo.
"C:\Program Files\Java\jdk1.xxxxx\bin\java" -jar C:\Users\xxx\Downloads\xxx.jar
If it shows something like JRE 1.xxx is not a valid JDK Java Home, make sure the System variables for JAVA_HOME in Environment Variables is pointing to the correct JDK directory. JDK 1.8 or above is recommended (2018).
A useful thread here, you may refer it: Why its showing your JDK c:program files\java\jre7 is not a valid JDK while instaling weblogic server?
For me it happen because i run it with default java version (7) and not with compiled java version (8) used to create this jar.
So i used:
%Java8_64%\bin\java -jar myjar.jar
Instead of java 7 version:
java -jar myjar.jar
I had a similar problem where TextMate or something replaced the double quotes with the unicode double quotes.
Changing my SELENIUM_SERVER_JAR from the unicode double quotes to regular double quotes and that solved my problem.
this is because you are looking for the file in the wrong path
1. look for the path of the folder where you placed the file
2. change the directory cd in cmd use the right path
I use NetBeans and had the same issue. After I ran build and clean project my program was executable. The Java documentation says that the build/clean command is for rebuilding the project from scratch basically and removing any past compiles. I hope this helps. Also, I'd read the documentation. Oracle has NetBeans and Java learning trails. Very helpful. Good luck!
Maybe you have specified the wrong version of your jar.
I finally pasted my jar file into the same folder as my JDK so I didn't have to include the paths. I also had to open the command prompt as an admin.
Right click Command Prompt and "Run as administrator"
Navigate to the directory where you saved your jdk to
In the command prompt type: java.exe -jar <jar file name>.jar
Keep the file in same directory where you are extracting it. That worked for me.
This is permission issue, see if the directory is under your User.
That's why is working in another folder!
Rename the jar file and try
Explanation :
yes, I know there are many answers still I want to add one point here which I faced.
I built the jar and I moved it into the server where I deploy (This is the normal process)
here the file name which I moved already existed in the server, here the file will override obviously right. In this case, I faced this issue.
maybe at the time of overriding there can be a permission copy issue.
Hope this will help someone.
Have you tried to run it under administrator privoleges?
meaning, running the command in "Run As" and then select administrator with proper admin credentials
worked for me
I was trying this:
After giving the file read, write, execute priviledges:
chmod 777 java-repl.jar
alias jr="java -jar $HOME/Dev/java-repl/java-repl.jar"
Unable to access bla bla..., this was on Mac OS though
So I tried this:
alias jr="cd $HOME/Dev/java-repl/ && java -jar java-repl.jar"
This did not work "Unable to access jarfile"
"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\ OneWireViewer.jar"
This does work
"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\OneWireViewer.jar"
The difference is the single space in front of OneWireViewer.jar not withstanding that it is surrounded with quotes and even has other spaces.

can not read file from linux system using java

I am trying to read/write files on Ubuntu 12.04.
I set permission of that directory by chmod -R 777 .
But still when I call canRead() method on that directory it returns false.
my directory is /root/Temp
please help me to solve this problem
Code (copied from comments):
File xyz = new File("/root/Temp");
System.out.println("filename :"+xyz.getPath());
System.out.println("can read :"+xyz.canRead());
String[] children = xyz.list();
Children is null, output of can read is false.
Are you running your program as root? it is not sufficient changing the permissions of /root/temp, if you are not the user root you wont be able to "go through" the dir /root unless you also change the permissions of the dir /root .
I too faced the same while doing XML Parsing using Java SAX Parser. My file is not read by the java program. The mistake I done was, I didn't specify the file name correctly.
After your /root/Temp you have to add some more details too.
For example : /root/Temp/example.xml
Then your program will work fine.
Hope this helps!!

Problems with server

I am making a game server, and I have to lead it to Java. I have done that, but it says "The system cannot find the path specified. The path is ""c:\programfiles\Java\jdk1.7.0_25" Which I can follow that right to it, with no problems. So whats wrong?
Yes, I have tried a space.
It's very difficult to determine what you are trying to do right here..
From what it looks like, you are trying to call the program, jdk1.7.0_25, when that is not a valid program.
If i'm understanding you correctly, you want to copy all java files from this directory (.) to the jdk folder. to do that, use
#echo off
COLOR 08
title Compiler
cp ./*.java "c:\program files\java\jdk1.7.0_25"
pause
If i'm not correct with that assumption, my second one is that you are trying to compile all java files, and use . as the classpath. If so, then try,
#echo off
COLOR 08
title Compiler
"c:\program files\java\jdk1.7.0_25\bin\javac.exe" -cp . *.java
pause
This is a little dirty from a pragmatic point of view, because you are explicitly stating which version to use.. don't hardcode things like this..
java should be in your path.. if it is not, then press Win+Pause Break click "Advanced Settings -> Environment Variables" and add the "bin" folder to your "PATH" env variable, then you can do
javac -cp . *.java instead of that entire path.
Check your environment variables on your system, as well as the run path from where you are running your server. It may be a configuration issue.
On windows 7, that would be Computer -> Right Click -> Properties -> Advanced -> Environment Variables.
Check to see that JAVA_HOME and/or PATH variable is set.
I am sure you must have tried using / instead of \
In case you have not, please try it.
If it still doesn't work, please provide more details on the error.
You may paste some of the stacktrace if you are getting en exception

Using Ctags with Gvim on Windows

I'm using gvim as my main 'IDE' on windows 7 and I would like to use ctags to navigate through the code. I've downloaded it and ran based on this tutorial: http://www.techrepublic.com/article/configure-vi-for-java-application-development/5054618
ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src
I've then setup my vimrc with...
set tags=~/.tags
However when I do Ctrl+] on a keyword, it says it can not find the file which the tag is defined in. Shows the correct path except it misses out c:\ from the start so vim can't load it.
How can get it to give me the correct path?
I'm using the latest version of gvim and ctags.
Thanks
FWITW, I'm not entirely sold on the concept of keeping my tags in one location.
This part of the command call:
-f ~/.tags
Nor would I hard path to my current project. This part:
-R ~/myprojects/src
BTW, Windows doesn't have ~ so I don't think either of those would work (not sure if Vim will find ~, i.e. "home").
If I were you, I would cut my teeth on the simplest method until you get more comfortable with the Vim methods and ideals.
Easiest method:
Always let Vim know the "Current Directory" (making the assumption that you are not launching Vim via the command prompt). When you open a file always set the current directory by issuing the following command from normal mode:
:cd %:p:h
Generate a tag file in the current directory with the following command (from normal mode).
:!ctags -R .
Happy jumping.

Categories

Resources