Java:为什么打包到jar文件中的代码会阻止外部类访问?

我的Java应用程序有一个插件系统。 我使用URL类加载器调用外部类。 当我的应用程序作为类文件运行时,以及当我的应用程序处于JARforms时,该部分运行良好。 我遇到的问题是,插件文件可以运行他们自己的独立代码,但他们创建了一个JPanel。 当我尝试将JPanel添加到主应用程序类中的JPanel时,我得到一个引用主类的空指针exception。 (com.cpcookieman.app.Main)但是,如果我运行应用程序的类文件,只有在打包时才会发生这种情况。 我怎么解决这个问题? 为什么我的代码打包到jar文件中会阻止外部类访问jar中的类? 编辑:根据要求,堆栈跟踪。 java.lang.NullPointerException at TestPlugin2.Main.(Main.java:23) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at com.cpcookieman.ph.PluginLoader$2.run(PluginLoader.java:74) at java.lang.Thread.run(Unknown Source) 编辑2:类加载代码 String pluginsPath; if (Main.os.equals(“Windows”)) { pluginsPath = “C:\\plugins\\”; } else { pluginsPath = “~/plugins/”; } File file = new […]

如何在java中获取屏幕DPI?

我正在开发一个应用程序,我需要屏幕DPI ..我检查了几个论坛,并获得了一个代码片段,如下所示: Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); System.out.println(“screen width: “+screen.getWidth()); System.out.println(“screen height: “+screen.getHeight()); int pixelPerInch=java.awt.Toolkit.getDefaultToolkit().getScreenResolution(); System.out.println(“pixelPerInch: “+pixelPerInch); double height=screen.getHeight()/pixelPerInch; double width=screen.getWidth()/pixelPerInch; double x=Math.pow(height,2); double y=Math.pow(width,2); 但无论屏幕分辨率如何, pixelPerInch值在96处保持不变。代码有什么问题? 我得到了另一个swt代码,用于同样的事情,如下所示: import org.eclipse.swt.graphics.Device; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class MainClass { public void run() { Display display = new Display(); Shell shell = new Shell(display); shell.setText(“Display Device”); createContents(shell); shell.pack(); […]

jmock模拟静态方法

我的代码中有一个静态方法,我想以某种方式模拟。 我正在使用jmock。 我认为我可以这样做的一种方法是在静态方法周围使用“包装类”并模拟这个,但我希望有更好的解决方案。 我这是错误的方式吗? 反馈: 我将有一个接口和类有一个方法,只是调用静态方法。 它允许我通过模拟对这个包装类的调用来模拟逻辑。 (甚至谈论它我都觉得很脏:))

如何为JLabel创建事件处理程序?

我想这样做,如果我点击JLabel,标签就会变成一个新标签,并附加另一个图像。 到目前为止我的代码看起来像: public class Picture extends JFrame { private ImageIcon _image1; private ImageIcon _image2; private JLabel _mainLabel; private JLabel _mainLabel2; public Picture(){ _image1 = new ImageIcon(“src/classes/picture1.jpg”); _image2 = new ImageIcon(“src/classes/picture2.jpg”); _mainLabel = new JLabel(_image1); _mainLabel2 = new JLabel(_image2); add(_mainLabel); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

使用Java进行日期格式转换

我的日期/时间值为2010-07-26T11:37:52Z ,现在我希望以26-jul-2010(dd-mon-yyyy)格式约会,我该怎么做?

边界匹配器正则表达式(\ b)下面的代码片段问题

我的意见: 1. end 2. end of the day or end of the week 3. endline 4. something 5. “something” end 基于上述讨论,如果我尝试使用此代码段替换单个字符串,它会成功删除该行中的相应单词 public class DeleteTest { public static void main(String[] args) { // TODO Auto-generated method stub try { File file = new File(“C:/Java samples/myfile.txt”); File temp = File.createTempFile(“myfile1”, “.txt”, file.getParentFile()); String delete=”end”; BufferedReader reader = […]

参数化类型数组

我无法确定以下RHS预期的类型参数 ArrayList<Pair>[] nodes = new ArrayList[indexes.length]; 为什么<Pair>的副本不合法?

创建了多少个对象

我正在讨论在Java中使用String和StringBuffer的问题。 这两个例子中每个都创建了多少个对象? 例1: String s = “a”; s = s + “b”; s = s + “c”; 例2: StringBuilder sb = new StringBuilder(“a”); sb.append(“b”); sb.append(“c”); 在我看来,Ex 1将创建5,而Ex 2将创建4个对象。

在一个JFrame中同时处理两个JPanel

我是新手到java swing。 在尝试使用图形时,我遇到了这个问题。 我无法在网络上找到合适的解决方案。 所以我想发布在这里。 所以现在让我们来解决我的问题。 首先,我将解释我想做什么。 然后我将解释我的问题。 我试图让两个球在JFrame中同时向不同的方向移动。 (基本上我想做类似连锁反应的游戏,当你点击一个装满的盒子时,球会同时向不同的方向移动)。 在这里我创建两个(截至目前)两个球的JPanels,我试图同时在JFrame上移动。 这是我试过的代码, public class chainGraphics扩展JPanel实现Runnable { int oldX,oldY,newX,newY; int changeX,changeY; Container myPane; public chainGraphics(int oldX,int oldY,int newX,int newY,Container myPane) { // TODO Auto-generated constructor stub this.myPane=myPane; this.oldX=oldX; this.oldY=oldY; this.newX=newX; this.newY=newY; myPane.add(this); } public void paintComponent(Graphics g) { //super.paintComponent(g); System.out.println(“hj”); g.drawOval(changeX,changeY, 40, 40); } @Override public […]

会话中的Spring存储对象

我想用Spring实现一个购物车,所以我需要在会话中保存一个对象Cart (它有像products,paymentType和deliveryType这样的属性)。 我试图用bean创建它,并将属性“scope”设置为“session”,但它只是不起作用,我应该在我的控制器或Cart类中使用一些额外的注释吗? 任何使用示例都非常有用:-)在此先感谢。