Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 2 of 2

Thread: Core Java

  1. #1
    Junior Member
    Join Date
    Jan 2013
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Core Java

    Help me pls. what's wrong in this code?
    thanks in advance..

    [code]
    package Apriori;
    import java.io.*;
    import java.util.*;

    public class Apriori extends AprioriCalculation{

    public static void main(String[] args) {
    AprioriCalculation ap = new AprioriCalculation();

    ap.aprioriProcess();
    }
    }
    class AprioriCalculation
    {
    Vector<String> candidates=new Vector<String>(); //the current candidates
    String configFile="config.txt"; //configuration file
    String transaFile="transa.txt"; //transaction file
    String outputFile="apriori-output.txt";//output file
    int numItems; //number of items per transaction
    int numTransactions; //number of transactions
    double minSup; //minimum support for a frequent itemset
    String oneVal[]; //array of value per column that will be treated as a '1'
    String itemSep = " "; //the separator value for items in the database
    public void aprioriProcess()
    {
    Date d; //date object for timing purposes
    long start, end; //start and end time
    int itemsetNumber=0; //the current itemset being looked at
    //get config
    getConfig();

    System.out.println("Apriori algorithm has started.\n");

    //start timer
    d = new Date();
    start = d.getTime();

    //while not complete
    do
    {
    //increase the itemset that is being looked at
    itemsetNumber++;

    //generate the candidates
    generateCandidates(itemsetNumber);

    //determine and display frequent itemsets
    calculateFrequentItemsets(itemsetNumber);
    if(candidates.size()!=0)
    {
    System.out.println("Frequent " + itemsetNumber + "-itemsets");
    System.out.println(candidates);
    }
    //if there are <=1 frequent items, then its the end. This prevents reading through the database again. When there is only one frequent itemset.
    }while(candidates.size()>1);

    //end timer
    d = new Date();
    end = d.getTime();

    //display the execution time
    System.out.println("Execution time is: "+((double)(end-start)/1000) + " seconds.");
    }

    public static String getInput()
    {
    String input="";
    //read from System.in
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    //try to get users input, if there is an error print the message
    try
    {
    input = reader.readLine();
    }
    catch (Exception e)
    {
    System.out.println(e);
    }
    return input;
    }


    private void getConfig()
    {
    FileWriter fw;
    BufferedWriter file_out;

    String input="";
    //ask if want to change the config
    System.out.println("Default Configuration: ");
    System.out.println("\tRegular transaction file with '" + itemSep + "' item separator.");
    System.out.println("\tConfig File: " + configFile);
    System.out.println("\tTransa File: " + transaFile);
    System.out.println("\tOutput File: " + outputFile);
    System.out.println("\nPress 'C' to change the item separator, configuration file and transaction files");
    System.out.print("or any other key to continue. ");
    input=getInput();

    if(input.compareToIgnoreCase("c")==0)
    {
    System.out.print("Enter new transaction filename (return for '"+transaFile+"'): ");
    input=getInput();
    if(input.compareToIgnoreCase("")!=0)
    transaFile=input;

    System.out.print("Enter new configuration filename (return for '"+configFile+"'): ");
    input=getInput();
    if(input.compareToIgnoreCase("")!=0)
    configFile=input;

    System.out.print("Enter new output filename (return for '"+outputFile+"'): ");
    input=getInput();
    if(input.compareToIgnoreCase("")!=0)
    outputFile=input;

    System.out.println("Filenames changed");

    System.out.print("Enter the separating character(s) for items (return for '"+itemSep+"'): ");
    input=getInput();
    if(input.compareToIgnoreCase("")!=0)
    itemSep=input;


    }

    try
    {
    FileInputStream file_in = new FileInputStream(configFile);
    BufferedReader data_in = new BufferedReader(new InputStreamReader(file_in));
    //number of items
    numItems=Integer.valueOf(data_in.readLine()).intVa lue();

    //number of transactions
    numTransactions=Integer.valueOf(data_in.readLine() ).intValue();

    //minsup
    minSup=(Double.valueOf(data_in.readLine()).doubleV alue());

    //output config info to the user
    System.out.print("\nInput configuration: "+numItems+" items, "+numTransactions+" transactions, ");
    System.out.println("minsup = "+minSup+"%");
    System.out.println();
    minSup/=100.0;

    oneVal = new String[numItems];
    System.out.print("Enter 'y' to change the value each row recognizes as a '1':");
    if(getInput().compareToIgnoreCase("y")==0)
    {
    for(int i=0; i<oneVal.length; i++)
    {
    System.out.print("Enter value for column #" + (i+1) + ": ");
    oneVal[i] = getInput();
    }
    }
    else
    for(int i=0; i<oneVal.length; i++)
    oneVal[i]="1";

    //create the output file
    fw= new FileWriter(outputFile);
    file_out = new BufferedWriter(fw);
    //put the number of transactions into the output file
    file_out.write(numTransactions + "\n");
    file_out.write(numItems + "\n******\n");
    file_out.close();
    }
    //if there is an error, print the message
    catch(IOException e)
    {
    System.out.println(e);
    }
    }

    private void generateCandidates(int n)
    {
    Vector<String> tempCandidates = new Vector<String>(); //temporary candidate string vector
    String str1, str2; //strings that will be used for comparisons
    StringTokenizer st1, st2; //string tokenizers for the two itemsets being compared

    //if its the first set, candidates are just the numbers
    if(n==1)
    {
    for(int i=1; i<=numItems; i++)
    {
    tempCandidates.add(Integer.toString(i));
    }
    }
    else if(n==2) //second itemset is just all combinations of itemset 1
    {
    //add each itemset from the previous frequent itemsets together
    for(int i=0; i<candidates.size(); i++)
    {
    st1 = new StringTokenizer(candidates.get(i));
    str1 = st1.nextToken();
    for(int j=i+1; j<candidates.size(); j++)
    {
    st2 = new StringTokenizer(candidates.elementAt(j));
    str2 = st2.nextToken();
    tempCandidates.add(str1 + " " + str2);
    }
    }
    }
    else
    {
    //for each itemset
    for(int i=0; i<candidates.size(); i++)
    {
    //compare to the next itemset
    for(int j=i+1; j<candidates.size(); j++)
    {
    //create the strigns
    str1 = new String();
    str2 = new String();
    //create the tokenizers
    st1 = new StringTokenizer(candidates.get(i));
    st2 = new StringTokenizer(candidates.get(j));

    //make a string of the first n-2 tokens of the strings
    for(int s=0; s<n-2; s++)
    {
    str1 = str1 + " " + st1.nextToken();
    str2 = str2 + " " + st2.nextToken();
    }

    //if they have the same n-2 tokens, add them together
    if(str2.compareToIgnoreCase(str1)==0)
    tempCandidates.add((str1 + " " + st1.nextToken() + " " + st2.nextToken()).trim());
    }
    }
    }
    //clear the old candidates
    candidates.clear();
    //set the new ones
    candidates = new Vector<String>(tempCandidates);
    tempCandidates.clear();
    }

    private void calculateFrequentItemsets(int n)
    {
    Vector<String> frequentCandidates = new Vector<String>(); //the frequent candidates for the current itemset
    FileInputStream file_in; //file input stream
    BufferedReader data_in; //data input stream
    FileWriter fw;
    BufferedWriter file_out;

    StringTokenizer st, stFile; //tokenizer for candidate and transaction
    boolean match; //whether the transaction has all the items in an itemset
    boolean trans[] = new boolean[numItems]; //array to hold a transaction so that can be checked
    int count[] = new int[candidates.size()]; //the number of successful matches

    try
    {
    //output file
    fw= new FileWriter(outputFile, true);
    file_out = new BufferedWriter(fw);
    //load the transaction file
    file_in = new FileInputStream(transaFile);
    data_in = new BufferedReader(new InputStreamReader(file_in));

    //for each transaction
    for(int i=0; i<numTransactions; i++)
    {
    //System.out.println("Got here " + i + " times"); //useful to debug files that you are unsure of the number of line
    stFile = new StringTokenizer(data_in.readLine(), itemSep); //read a line from the file to the tokenizer
    //put the contents of that line into the transaction array
    for(int j=0; j<numItems; j++)
    {
    trans[j]=(stFile.nextToken().compareToIgnoreCase(oneVal[j])==0); //if it is not a 0, assign the value to true
    }

    //check each candidate
    for(int c=0; c<candidates.size(); c++)
    {
    match = false; //reset match to false
    //tokenize the candidate so that we know what items need to be present for a match
    st = new StringTokenizer(candidates.get(c));
    //check each item in the itemset to see if it is present in the transaction
    while(st.hasMoreTokens())
    {
    match = (trans[Integer.valueOf(st.nextToken())-1]);
    if(!match) //if it is not present in the transaction stop checking
    break;
    }
    if(match) //if at this point it is a match, increase the count
    count[c]++;
    }

    }
    for(int i=0; i<candidates.size(); i++)
    {
    // System.out.println("Candidate: " + candidates.get(c) + " with count: " + count + " % is: " + (count/(double)numItems));
    //if the count% is larger than the minSup%, add to the candidate to the frequent candidates
    if((count[i]/(double)numTransactions)>=minSup)
    {
    frequentCandidates.add(candidates.get(i));
    //put the frequent itemset into the output file
    file_out.write(candidates.get(i) + "," + count[i]/(double)numTransactions + "\n");
    }
    }
    file_out.write("-\n");
    file_out.close();
    }
    //if error at all in this process, catch it and print the error messate
    catch(IOException e)
    {
    System.out.println(e);
    }
    //clear old candidates
    candidates.clear();
    //new candidates are the old frequent candidates
    candidates = new Vector<String>(frequentCandidates);
    frequentCandidates.clear();
    }
    }

    [Error:]
    Exception in thread "main" java.lang.NoClassDefFoundError: Apriori (wrong name:
    Apriori/Apriori)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java :620)
    at java.security.SecureClassLoader.defineClass(Secure ClassLoader.java:12
    4)
    at java.net.URLClassLoader.defineClass(URLClassLoader .java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader. java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java: 195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.j ava:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:3 06)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
    at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)


  2. #2
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    SW Missouri
    Posts
    20,618
    Thanks
    50
    Thanked 2,235 Times in 2,207 Posts

    Default Re: Core Java

    java.lang.NoClassDefFoundError: Apriori (wrong name:
    Apriori/Apriori)
    The class is in a package. You need to specify the class's full name including the package name when you execute the class:
    java <packagename>.<classname>
    Also the classpath must be set to the folder containing the package folder.
    If you don't understand my answer, don't ignore it, ask a question.

Similar Threads

  1. Please help me analyze this java core dump on AIX
    By acejun01 in forum What's Wrong With My Code?
    Replies: 6
    Last Post: February 12th, 2014, 04:21 AM
  2. modification to core java file: javax.script.AbstractScriptEngine
    By amughost in forum Java Theory & Questions
    Replies: 0
    Last Post: June 13th, 2012, 11:37 AM
  3. Opening for Core Java Developers,San Jose,CA
    By Poonam 15 in forum Paid Java Projects
    Replies: 0
    Last Post: May 28th, 2012, 04:19 AM
  4. core java begineer
    By vinod in forum Object Oriented Programming
    Replies: 3
    Last Post: November 19th, 2011, 05:20 AM
  5. Replies: 1
    Last Post: June 4th, 2011, 11:22 AM