inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(javafx) 실전 데스크탑앱 프로젝트 - 유튜브관리앱

프로세스하나만 띄우기가 안되어서요.

787

jh

작성한 질문수 29

0

위쪽에 checkIfRunning(): 선언했구요. 

예제로 했던 WarningStudy를 실행하고 나면 경고창이 뜨긴하는데... 

위 프로그램을 한번 실행하고 두번째 실행,세번째 실행해도 경고창이 실행이 안되어서요. 

JavaFX 웹앱 java

답변 10

0

김래옥

메일 받아보았습니다.

win32방법적용하실 때

"primaryStage.setTitle("유트브앱");" 이 아니라 

"primaryStage.setTitle("유튜브앱");" 입니다.

아래코드의 "유튜브앱"과 일치시키셔야 합니다.

"HWND hwnd = User32.INSTANCE.FindWindow(null, "유튜브앱");"

------------------------------------------------------------------------------------

두 가지 방법 모두,  "빈 창"에서 작동이 되었다면, 한글경로때문에 문제가 발생한 것 같지는 않습니다.

("빈 창"역시 한글경로가 들어가 있다고 가정할 때입니다.

그래도 혹시 모르니 파일경로에 한글이 포함되어 있지 않도록 하시고, 파일이름도 한글로 짓지 않도록 하세요.)

---------------------------------------------------------------------------------------

마지막으로 해 볼수 있는 행동은

유튜브앱코드쪽에서 "빈 창"코드쪽(정상으로 작동 되는 쪽)으로 부분적으로 하나씩 옮기면서 실행시켜보는 겁니다.

하나씩 옮길 때마다 실행시키는 겁니다.

그리고 어느 부분에서 작동이 되지 않는 지 확인해주세요.

일단 메일로 제가 작성한 포트가 들어간 코드를 보냈습니다.

(파일을 이클립스안으로 통으로 이동시키시면,

첫 라인의 주석을 참고해서, 빨간색 표시가 뜨는 아이콘을 클릭한 후  "Add package~"를 더블클릭해서 선택합니다.)

0

jh

네 알겠습니다.

0

김래옥

작성하신 유튜브앱 전체코드를 ---------@gmail.com(비공개로 전환함)로 보내주세요.

0

jh

위 2가지 방법 각자 하면 두번째 실행시 경고창이 잘 뜨는데... 유트브앱에다 복사하면 프로세스가 계속 실행되고 경고창이 뜨질 않네요 ㅠ.ㅠ

0

김래옥

만약 위처럼 해도 정말로 작동이 안된다면,  win32(윈도우즈프로그래밍)방법을 소개하겠습니다.

1.아래의 라이브러리 2개를 모두 다운받고, lib폴더로 이동시킨 후 등록시킵니다.

jna라이브러리(첫번째)

jna라이브러리(두번째)

2.아래와 같이 코드를 작성합니다.

복사붙여넣기용

import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.image.Image;
import javafx.stage.Stage;

import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;

public class ProblemTest extends Application {

	@Override
	public void start(Stage primaryStage) {

		
		checkIfRunning();

		primaryStage.show();
		primaryStage.setTitle("유튜브앱");
	}

	public static void main(String[] args) {
		launch(args);
	}

	public void checkIfRunning() {
		try {

			HWND hwnd = User32.INSTANCE.FindWindow(null, "유튜브앱");

			// "동일한 앱타이틀"을 가진 프로세스가 존재하면 경고창 띄우기 
			if (hwnd != null) {

				System.out.println("이미 실행중");

				Alert alert = new Alert(AlertType.INFORMATION);

				Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
				stage.getIcons().add(new Image(getClass().getResourceAsStream("assets/warning.png")));
				alert.setTitle("Warning");
				alert.setHeaderText("이미 유튜브앱이 실행중입니다.");
				alert.showAndWait();

				System.exit(1);

			}

		} catch (Exception e) {

			System.out.println("JNA 에러");

		}
	}

}

0

김래옥

빈 창으로 프로세스를 한 번만 실행시키는 코드입니다.

(안되면 포트번호도 한 번 바꿔보시구요. 이것 저것 시도해보는 게 중요합니다.)

제대로 작동한다면 이를 유튜브앱소스에 끼워넣으시면 됩니다.

복사붙여넣기용 코드

public class ProblemTest extends Application {

	int port = 9900;

	@Override
	public void start(Stage primaryStage) {
		
		checkIfRunning();

		primaryStage.show();
		
	}

	public static void main(String[] args) {
		launch(args);
	}
	
	//warning이미지 파일이 assets폴더안에 있지 않으면 에러가 납니다. 이미지파일을 올바른 위치에 두셔야 합니다.
	public void checkIfRunning() {
		try {
			ServerSocket socket = new ServerSocket(port, 0, InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 }));
			
			System.out.println("9900포트할당");
			
		} catch (Exception e) {

			System.out.println("이미 실행중");

			Alert alert = new Alert(AlertType.INFORMATION);

			Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
			stage.getIcons().add(new Image(getClass().getResourceAsStream("assets/warning.png")));
			alert.setTitle("Warning");
			alert.setHeaderText("이미 유튜브앱이 실행중입니다.");
			alert.showAndWait();

			System.exit(1);

		}
	}
	
}

0

jh

계속 하나의 프로세스만 실행되지 않네요~ 전체 코드를 한 번 살펴 봐 주실 수 있나요?? 

0

김래옥

exe파일이 있는 위치에서 assets폴더를 만드시고 그 안에 list.asx파일을 생성하시면 됩니다. 이클립스환경과 동일하게 맞춰주면 됩니다.

프로세스문제는 분명 예제가 제대로 작동했으니까 해결될 거라고 생각하는 데요.

계속 포트할당메세지가 뜨는 건가요?

0

jh

위 처럼 했는데 해결이 안되네요...

그리고 마지막까지 강의를 들었는데  유트앱관리 중간에 실행파일 만들기가 있고 팟플레이까지 한거까지 실행파일로 만들고 싶거든요. 방법 관련해서 설명 부탁드려요. 

0

김래옥

일단, 콘솔탭(Console) 화면부분에서 마우스 오른쪽 클릭해서 나오는 옵션인 Terminate/Disconnect All을 선택해서

모든 프로세스를 종료시켜주시고 다시 한번 테스트해보세요.

갑자기 채점 사이트가 바뀌었어요

0

13

1

문제 리스트 페이지

0

19

1

part8 Notion 링크

0

17

1

java11 ClipboardAssistance 를 찾지 못합니다.

0

113

2

크롬앱기능(구현) 강의에서 new ClipboardAssistance()에서 에러가 발생합니다.

0

498

3

launch4j 파일로 jar을 exe 파일로 변경하였으나 실행이 되지 않습니다.

0

2734

1

javafx로 만든 프로그램을 .exe 응용프로그램 파일로 만들어 어디에서든 간편히 실행시키고 싶습니다.

0

748

1

이클립스 워크스페이스 변경시 자바 fx

0

433

1

sql studio exe파일이 없어요.

0

263

1

포트할당

0

284

2

왜 클릭했을 때 한번만 previous, current 뜨고 다시 클릭하면 안뜰까요?

0

272

1

에러가 떠요

0

1053

1

안녕하세요. 하나의 컨트롤러 내에서 다른 컨트롤러 호출에 관한 질문입니다.

0

1198

2

sqlite 파일을 열 때 오류가 발생합니다.

0

613

2

이클립스에 오류가 발생합니다.

0

711

3

근데 이거 강의 소스 어디 있나요 ?

0

202

0

왜자꾸 sqlite 파일을 열려고하니깐이런오류가뜰까요 ㅠㅠ

0

1042

6

YoutubeData()클래스 부분 설명 부탁드려요.

0

340

3

db연결은 되는데 data insert 에러가 나네요. 부탁드려요~

0

360

2

fire()의 역할이 무엇인가요?

0

950

1

삽입, 삭제,업데이트 까지는 성공했는데 로드하려고 하니 아래 add에서 에러가 납니다.

0

383

2

다음과 같은 에러가 납니다. 답변 부탁드려요.

0

257

2

javafx 처음 실행시 아래같은 메세지가 나타납니다.

0

293

2

강의자료

0

196

1