Hadoop- How can I fix the errors of compilation - java

I downloaded a program contains 8 Java classes and 2 files.sh ( compile.sh and execute.sh ) and one jar file. I edit the Jars locations in compile.sh file, but when I compile it I got a Java errors like:
graphMining.java:19: error: cannot find symbol
import org.apache.hadoop.util.ToolRunner
symbol: class ToolRunner
location: package org.apache.hadoop.util
graphMining.java:22: error: package org.apache.hadoop.io.compress does not exist
import org.apache.hadoop.io.compress.CodecPool;
graphMining.java:121: error: cannot find symbol
public void reduce(Text symbol, Iterator values, OutputCollector output, Reporter reporter)
I fixed JAVA_HOME path in hadoop-env.sh and when I write echo $JAVA_HOME it works. What should I do please?

Related

Compiler couldn't read imported class [duplicate]

This question already has answers here:
How to compile java package structures using javac
(6 answers)
What does a "Cannot find symbol" or "Cannot resolve symbol" error mean?
(18 answers)
Closed 2 years ago.
I have been trying to compile through CMD by creating packages manually. I tried the command javac -d . Nameinfo.java and javac -d . Returndata.java, where Nameinfo contains the calculations and Returndata contains main function, and this command worked absolutely fine. Now I made 2 different packages in my "java programmes" folder i.e packx and packy, where packx contains Nameinfo and packy contains Returndata. Now, when I compile these two, Nameinfo.java got compiled but Returndata could not read/recognize the imported Nameinfo in Returndata.java.
errors:
E:\java programmes>cd packx
E:\java programmes>cd packx
E:\java programmes\packx>javac Nameinfo.java
E:\java programmes\packx>cd..
E:\java programmes>cd packy
E:\java programmes\packy>javac Returndata.java
Returndata.java:2: error: package packx does not exist
import packx.Nameinfo;
^
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol: class Nameinfo
location: class Returndata
Returndata.java:7: error: cannot find symbol
Nameinfo data = new Nameinfo();
^
symbol: class Nameinfo
location: class Returndata
3 errors
if java or javac needs, say, packx.Returndata as a type to do something, it will scour a classpath and/or sourcepath for a directory named packx, and within that, Returndata.java or Returndata.class depending on the tool and path we're talking about.
So, you're in E:\java programmes\packy, and you're compiling some code that imports packx. Therefore, javac will look in the classpath for packx/Returndata.class and in the sourcepath for packx/Returndata.java and it doesn't find what you want because E:\java programmes isn't on the source path; generally they default to . (i.e. the current directory).
Stay in the E:\java programmes folder for all this work:
E:
cd "\Java programmes"
javac packx/Nameinfo.java
javac packy/Returndata.java
Or better yet, realize that manually compiling a multipackage java application is crazy. Use maven, gradle or some other build tool that takes care of all this for you :)

Unable to import JAR files?

I need a particular JAR file, fo execute a code. I am able to run the code In eclipse by adding the JAR file to libraries.
But when I run he code from cmd prompt I get error saying unable to import javax.jms(the jar file).
C:\tibco\ems\8.5\samples\java\JNDI>javac tibjmsJNDIFT.java
tibjmsJNDIFT.java:43: error: package javax.jms does not exist
import javax.jms.*;
^
tibjmsJNDIFT.java:108: error: cannot find symbol
ConnectionFactory connectionFactory =
^
symbol: class ConnectionFactory
location: class tibjmsJNDIFT
tibjmsJNDIFT.java:109: error: cannot find symbol
(ConnectionFactory)jndiContext.lookup(factory[j]);
^
symbol: class ConnectionFactory
location: class tibjmsJNDIFT
3 errors
C:\tibco\ems\8.5\samples\java\JNDI>
You should use the "-cp" or "-classpath" option:
javac -cp ".:/path/to/jms.jar:/path/to/any-other.jar" tibjmsJNDIFT.java
On Windows OS you might have to use "semicolons" (;) instead of "colons" (:)

Junit not found

I've been following the steps of this very helpful guide on installing junit, but I've run into a problem. I've created this trivial test case as instructed:
import junit.framework.TestCase;
public class TestBasic extends TestCase{
public void testTrue(){
assertTrue(true);
}
}
When I try to compile it, this happens:
$ javac TestBasic.java
TestBasic.java:1: error: package junit.framework does not exist
import junit.framework.TestCase;
^
TestBasic.java:3: error: cannot find symbol
public class TestBasic extends TestCase{
^
symbol: class TestCase
TestBasic.java:5: error: cannot find symbol
assertTrue(true);
^
symbol: method assertTrue(boolean)
location: class TestBasic
3 errors
What is the reason for this?
More info:
$ echo $CLASSPATH
:/Users/sahandzarrinkoub/java/junit-X.Y.jar:/Users/sahandzarrinkoub/java/hamcrest-core-XX.YY.jar
Inside .bash_profile:
# Java
export JAVA_HOME=/Library/Java/Home
export JUNIT_HOME="$HOME/java"
export PATH="$PATH:$JUNIT_HOME"
export CLASSPATH="$CLASSPATH:$JUNIT_HOME/junit-X.Y.jar:$JUNIT_HOME/hamcrest-core-XX.YY.jar"
contents of ~/java:
$ cd ~/java
$ ls
TestBasic.java hamcrest-core-1.3.jar junit-4.12.jar

Java Symbol not found through javac weird error (Runs through Eclipse)

My project runs smoothly in Eclipse, no errors at all. I ran it through local tests (that are equal to the ones in an online mooshak contest) and all checks out. But when I sumbit it online, I get a CompileTimeError.
To try to locate the problem, I attempted to use javac in Main.java, and this happened:
javac -encoding US-ASCII Main.java
Main.java:8: error: package code does not exist
import code.*;
^
Main.java:129: error: cannot find symbol
public static void addWords(Scanner in, LibSystem system, int wordCount)
{
^
symbol: class LibSystem
location: class Main
Main.java:153: error: cannot find symbol
public static void searchWord(LibSystem system, String word) {
^
Other symbol errors follow for every reference to classes from my only package, which I fully import and the header of Main, for a total of 29 errors.
Project
src
Main.java
code (package with all my other java files)
Follow these steps :-
1.) make sure LibSystem class is in classpath.
2.)Compile java files in code folder using -d option. That will create directories with classes.
javac -d . code/*.java
3.) then compile your Main class.
javac Main.java

Cannot find symbol (extends another class)

I have my file structure as (they are in the package assigment):
prog/
src/assignment/
bin/assignment/
lib/assignment/
The files I am compiling are in src, and are being compiled to bin. The command I type is javac -d ./bin/ -cp ./bin/:./src/ -target 1.7 ./src/assignment/*.java
I have also tried javac -d ./bin/ -cp ./bin/:./src/ -target 1.7 ./src/assignment/GoodBrain.java ./src/assignment/LameBrain.java ./src/assignment/Board.java
For some reason I cannot two class files, the error message is 'cannot find symbol' (it points to the Board class and the LameBrain class).
The error message:
javac -g -d ./bin/ -cp ./src/:. -target 1.7 src/assignment/GoodBrain.java
src/assignment/GoodBrain.java:3: error: cannot find symbol
public class GoodBrain extends LameBrain{
^
symbol: class LameBrain
src/assignment/GoodBrain.java:11: error: cannot find symbol
public double rateBoard(Board board) {
^
symbol: class Board
location: class GoodBrain
2 errors
make: *** [bin/assignment/GoodBrain.class] Error 1
It is the same error for all the commands that I type in. Please tell me if I need to provide any new information
I fixed the error, it was because I forgot to include the package statement. Very dumb mistake

Categories

Resources