29. maj 2004 - 21:25Der er
21 kommentarer og 1 løsning
At bruge en klasse uden package declaration
Jeg har et projekt hvor alle klasser ligge i samme package. Jeg ønsker at bruge en klasse som ikke har nogen package declaration. Men javac kan ikke finde klassen. Hvad er galt?
Det ser ca. sådan her ud:
package myPackage public Klasse1 { void test() { Klasse2 x = new Klasse2(); } }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Igennem JNI bruges en kompileret Windows c .dll som jeg ikke kan ændre. Hvis jeg ligger klassen i min egne package, så får jeg en exception ved første kald. Er det ikke noget med at c-kodens funktionsnavne skal ændres hvis jeg ligger den i en package?
Kan man bruge en klasse uden pakke, fra en klasse i en pakke?
public class Dynno { public Dynno() { } public String dup(String s) { return (s + s); } public static void main(String[] args) throws Exception { Object o = Class.forName("Dynno").newInstance(); Class declarg[] = new Class[1]; declarg[0] = String.class; Method m = o.getClass().getMethod("dup", declarg); Object callarg[] = new Object[1]; callarg[0] = "abc"; String res = (String)m.invoke(o, callarg); System.out.println(res); } }
C:\e4\test>type ..\Dynno.java public class Dynno { public Dynno() { } public String dup(String s) { return (s + s); } }
C:\e4\test>type TestDynno.java package test;
import java.lang.reflect.*;
public class TestDynno { public static void main(String[] args) throws Exception { Object o = Class.forName("Dynno").newInstance(); Class declarg[] = new Class[1]; declarg[0] = String.class; Method m = o.getClass().getMethod("dup", declarg); Object callarg[] = new Object[1]; callarg[0] = "abc"; String res = (String)m.invoke(o, callarg); System.out.println(res); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.