2017-08-08 2 views
0

Je cherche un moyen d'exécuter un cluster de classes sous le même package à partir de la ligne de commande, mais en dépit de la compilation réussie, je reçois toujours "could not load main " les erreurs. J'ai changé le chemin et le chemin de classe pour ce qu'ils doivent être, ainsi que essayé de construire un sous-dossier nommé pour le paquet que j'utilise ("com.company"), mais en vain. J'ai essayé ce qui suit sur la ligne de commande alors que dans le répertoire du sous-dossier package nommé, ainsi que le dossier ci-dessus que:Utilisation du package Java depuis la ligne de commande - impossible de localiser ou de charger

>java com.company.myclassname 
>java myclassname 
>java com\company\myclassname 
>java -cp . com.company.myclassname 

Tous me ont laissé avec le même « Erreur: Impossible de trouver ou charger la classe principale ". À ce stade, j'ai étudié des questions et des tutoriels StackOverflow pendant 3 heures pour éviter d'avoir une question à répétition, mais je suis désespérée. Je dois retourner ce devoir dans deux heures. Cela fonctionne très bien dans mon IDE, et même à travers mon IDE de sauvegarde bêta, mais pas en ligne de commande. Quelqu'un peut-il s'il vous plaît éclaircir cela pour moi?

Edit: Code Source:

package com.company; 

import static com.company.myclassname.quantInput; 
import static com.company.myclassname.costInput; 

public class GroceryList {//This is the parent class for the program. 
private static int counter = 0;//Used to ensure that the number of items is limited to ten. 
private static GroceryList[] List = new GroceryList[10];//Used to hold the first ten grocery items in the add method. 


public GroceryList(){//Basic constructor 
} 

.... plus quelques méthodes.

Code client:

package com.company; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.text.DecimalFormat; 
import java.util.Scanner; 

public class myclassname { 

private static String[] nameInput = new String[10];//for holding names from each line, then gets sent to constructor by index 
public static int[] quantInput = new int[10];//for holding quantity from each line, then gets sent to constructor by index 
public static double[] costInput = new double[10];//for holding price from each line, then gets sent to constructor by index 
public static GroceryItemOrder[] GIOList = new GroceryItemOrder[10];//for holding GroceryItemOrder objects, then gets sent to toString() for printing 
public static double TotalCost = 0;//initializes total cost variable 
public static DecimalFormat f = new DecimalFormat("#####0.00");//Ensures proper output format for doubles 
private static int counter;//Used for indexing 
private static String target;//File path 

public static void main(String[] args) throws FileNotFoundException, NullPointerException { 
    target = args[0];//User-supplied file path is assigned to variable "target" 
    try {//protects against NullPointerException 
     input();//Sends file path to input method, which sends that data to all other relevant methods and classes 
     System.out.printf("%-20s", "Item");//These lines provide headers for output message 
     System.out.printf("%-10s", "Quantity"); 
     System.out.printf("%-10s", "Price"); 
     System.out.printf("%-12s", "Total Price"); 
     System.out.println(); 
     for (int i = 0; i < counter; i++) {//Ensures only correct objects are printed to user 
      System.out.println(GIOList[i].toString());//public object array sends data to the toString() method, which 
      //then prints formatted output string, limited by counter in order to ensure only proper data prints 
     }if (counter<10){//If the file contains under 11 items, this prints to the user 
     System.out.println("Total cost: $" + f.format(TotalCost));} 
     else{//if the file contains 11 or more lines, this statement makes clear that only the first 10 items 
      //will be included in the total cost. 
      System.out.println("Total cost of the first ten items in your file: $" + f.format(TotalCost)); 
     } 
    } catch (NullPointerException e){//safeguard against printing null strings to user 
    } 
} 

plus une méthode d'entrée

+0

Êtes-vous en cours d'exécution 'java com. company.myclassname' du répertoire parent de 'com'? Votre IDE devrait probablement imprimer la commande Java utilisée et vous pouvez l'utiliser comme référence. Assurez-vous également que votre classe 'com.company.myclassname' possède une méthode public static void main (String [] args)'. – Beginner

+0

Publiez le code source de 'myclassname.java'. Le plus important, montrez-nous le nom du paquet dans ce fichier, et dites-nous où (quelle structure de répertoires) vous utilisez pour stocker ce fichier Java. Très probablement, vous avez juste une petite erreur. –

+0

J'ai été de haut en bas de l'arborescence. Le dossier parent ne fait aucune différence. – CodeBlue04

Répondre

-1

S'il vous plaît essayer cette solution de contournement rapide.

créer une hiérarchie de dossiers com \ company ou com/company (en fonction de votre système d'exploitation). Insérez le fichier myclassname.class dans le dossier com \ company.

du dossier de niveau supérieur (qui est au même niveau que le dossier com), exécutez

java com.company.myclassname

Cordialement, Ravi

+0

Pas de chance. Le dossier par défaut a la hiérarchie com/company, et avant d'essayer de construire un sous-dossier avec le nom du paquet, j'ai essayé les deux. Je viens d'essayer à nouveau avec le même résultat. – CodeBlue04

+0

Cela fonctionne pour moi. –

+0

J'espère que ça va marcher pour mon professeur. Merci d'avoir répondu! Même si ça ne marche pas pour moi, si ça marche pour lui, c'est tout ce qui compte. – CodeBlue04