2016-09-18 3 views
-1

Итак, у меня есть два java-файла (с одним открытым классом в каждом) внутри одного и того же пакета, сохраненных в той же папке. Иерархия папок отражает имя пакета. Теперь, внутри одного из классов, я хотел бы вызвать метод из другого класса. Насколько мне известно, это можно сделать, позвонив по телефону: someClass.someMethod();. Когда я это делаю, файл не соответствует. Это дает сообщение об ошибке, в котором говорится, что он не может найти метод. * Я проверил наличие опечаток, но их нет. Я также попытался помочь программе, импортировав класс с import somePackage.someClass, но без какого-либо результата. Единственный способ заставить его работать - либо удалить пакет из обоих файлов, либо скопировать метод в другой файл, ни один из которых не нужен в долгосрочной перспективе.Вызов метода из другого класса в Java не работает?

Вы знаете, что может вызвать ошибку и как ее можно решить? Большое спасибо!

  • ошибка выглядит следующим образом:

    TestBit.java:7: error: cannot find symbol boolean value = someClass.someMethod(arg1, arg2); ^ symbol: variable someClass location: class otherClass 1 error"

EDIT:
Вот код:

package uk.ac.prejava.ex1; 
public class PackedLong{ 
     public static boolean get(long packed, int position) { 
      long check = (packed>>>position)& 1; 
      return (check == 1); 
     } 
    } 

и

package uk.ac.prejava.ex1; 
public class TestBit { 

    public static void main(String[] args) { 
    long currentValue = Long.decode(args[0]); 
    int position = Integer.parseInt(args[1]); 
    boolean value =PackedLong.get(currentValue, position); 
    System.out.println(value); 

}}

Я хотел бы назвать PackedLong.get во втором классе, но при соблюдении JAVAC не может найти файл.

+0

Как вы определили someMethod своего someclass? – SMA

+0

Пожалуйста, добавьте ваш код, и это сложно решить без проблем. –

+0

Сначала вы должны иметь экземпляр 'someClass'. – QBrute

ответ

1

Я предполагаю, что вы имеете следующую структуру пакета:

  • somePackage

    • SomeClass

    • OtherClass

Вот что может быть неправильным. Пока вы комментируете свой код, вы должны находиться в каталоге чуть выше somePackage. Поэтому, когда вы видите список каталогов, вы должны увидеть только somePackage. Теперь вам придется скомпилировать класс, используя следующее:

javac somePackage/otherClass.java 

Надеюсь, что работает.

+0

Это то, что я не смог сделать! Я не знаю, почему, но я только, кажется, способен выполнить код, если я внутри каталога пакета, иначе я получаю ошибку «файл не найден». Однако я могу только запустить код из каталога чуть выше пакета, как описано вами. Вы знаете, что может вызвать эту проблему? – Jhonny

+1

Вы должны находиться в папке непосредственно над 'somePackage' и набирать' javac somePackage/otherClass.java' с '/' not '.' – Shadov

+0

@Whatzs О, я вижу! Теперь это работает! Однако, когда я запускаю файл класса, я все еще использую '.', не так ли? – Jhonny