会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132360个问题
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 38448楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 38449楼
JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Maven 38450楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 38452楼
JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Maven 38453楼

项目结构.jpg

使用idea实现上面的项目,也是课程中的项目


问题1:关于创建父子工程

刚开始的时候我是创建dubbo-parent,然后点击右键创建Module(dubbo-pojo和dubbo-mapper) ,然后继续创建,  当创建dubbo-user-provider时也可以正常创建,当在右键dubbo-user-provider想创建dubbp-user-interface时就会出问题,创建不了;

        

        百度了一下,使用idea创建父子工程上大部分说的都是右键建立module,即所有项目都在一个idea窗口,可是当需要

pom(parent) --> pom(son) --> jar(sonson) 就会建立不了


所以为了实现如上图中的项目结构,进行了下面操作:

第一步:建立dubbo-parent(pom工程),这是第一个idea窗口;

第二步:建立dubbo-pojo(jar工程) ,这是第二个idea窗口, 然后手动给dubbo-pojo工程的pom文件加上paren节点

第三步:建立dubbo-mapper(jar工程) ,这是第三个idea窗口, 然后手动给dubbo-mapper工程的pom文件加上paren节点

第四步:建立dubbo-user-provider(pom工程) ,这是第四个idea窗口, 然后手动给dubbo-user-provider工程的pom文件加上paren节点

a:然后右键dubbo-user-provider,新建Module, 即dubbo-user-interface和dubbo-user-service;即第四个窗口是dubbo-user-provider工程,里面还有dubbo-user-interface和dubbo-user-service模块

第五步:建立dubbo-user-provider(pom工程),这是第五个idea窗口,之后建立步骤和第四步一样


我这么创建父子工程对吗?


问题2:

像我那样创建工程,在父工程和子工程的pom文件中加入需要的依赖,

发现 如果有修改,每一次使用其他工程中的东西都要回去使用maven插件install一下,最简单的比如说dubbo-pojo修改了一下实体类,就要重新install一下,别的项目要是有修改的每次都要install一下,太麻烦了,我这么做是不是不对,是不是有更方便的做法


问题3:

在dubbo-user-portal-service中需要加入dubbo-user-interface的坐标依赖,当我加入以后发现注入不了,因为接口中并没有生成它的bean啊,如图

QQ拼音截图20181221122658.png




JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Dubbo 38454楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 38455楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 38457楼
JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Maven 38458楼

package cn.sxt.game;


import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;


import javax.swing.JFrame;


/**

 * 飞机游戏的主窗口

 * @author 陈洁

 *

 */


public class MyGameFrame extends JFrame {

Image bg=GameUtil.getImage("images/bg.jpg");

Image planeImg=GameUtil.getImage("images/plane.png");

Plane plane=new Plane(planeImg, 250, 250);

Shell[] shells=new Shell[50];

@Override

public void paint(Graphics g) {


g.drawImage(bg,0,0,null);

plane.drawSelf(g);

for(int i=0;i<shells.length;i++){

shells[i].draw(g);

}

}

//帮助我们反复的重画窗口

class PaintThread extends Thread{

public void run(){

while(true){

repaint();

try {

Thread.sleep(40);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

//定义键盘监听的内部类

class KeyMonitor extends KeyAdapter{


@Override

public void keyPressed(KeyEvent e) {

plane.addDirection(e);



}


@Override

public void keyReleased(KeyEvent e) {

plane.minusDirection(e);


}

}

public void launchFrame(){

this.setTitle("尚学堂学员_程序猿作品");

this.setVisible(true);//默认不可见,true 可见

this.setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);//窗口大小

this.setLocation(300, 200);

this.addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

new PaintThread().start();

addKeyListener(new KeyMonitor());//给窗口增加键盘的监听

//初始化50个炮弹

for(int i=0;i<shells.length;i++){

shells[i]=new Shell();

}

}

public static void main(String[] arge){

MyGameFrame f=new MyGameFrame();

f.launchFrame();

}


}



我运行之后 可以运行,但是下面有提示:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at cn.sxt.game.MyGameFrame.paint(MyGameFrame.java:30)

at javax.swing.RepaintManager$3.run(RepaintManager.java:819)

at javax.swing.RepaintManager$3.run(RepaintManager.java:796)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)

at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)

at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)

at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)

at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:694)

at java.awt.EventQueue$3.run(EventQueue.java:692)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

这个是怎么回事??

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 38459楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637