본문 바로가기
Game Dev/MineCraft - Mod

마인크래프트 모드 개발환경 구축

by [방울] 2014. 11. 28.

 

 

 

[이 강좌는 독자가 자바 개발환경을 이미 구축하였고, JAVA에 대하여 어느정도 알거나 공부중인것으로 가정하고 작성합니다]

 

 

 

http://files.minecraftforge.net/

이곳에 접속하신 후,

 

저는 1.7.10버전의 모드를 개발해보려고 하니, 1.7.10 버전중에 권장버전 소스를 받아줍니다. (파란 원 안에 위치한 * 버튼)

모드개발은 짧은시간에 뚝딱! 하고 나오는게 아니므로 최신버전을 사용했다가 문제가 발생하면 곤란해질 수 있고, 보통의 유저들은 권장버전을 이용하기 때문에 맞춰서 개발하여야합니다.

 

그 다음, 받아온 소스 압축파일을 작업할 폴더에 압축해제해줍니다.

 

그럼 위와같이 나오실텐데요,

저 화면에서 쉬프트+우클릭을 해주시면 아래와 같은 메뉴가 나타납니다.

 

위 메뉴에서 여기서 명령 창 열기(W) 를 클릭해주시면

아래와 같은 창이 나타납니다.

 

 

cmd 창에서 경로는 개개인이 다릅니다.

왜냐? 각자 포지 소스 압축푼 폴더 경로가 다르기때문이죠.

 

저 상태에서 gradlew setupDevWorkspace eclipse 를 입력해주시면 자동으로 개발환경을 구축해줍니다.

아래는 이때 중간에 빨간색으로 에러가 발생하였을경우 예상할 수 있는 원인입니다.

1. JDK가 설치되어있지 않음.

2. 자바 환경변수 설정이 되어있지 않음.

위 예시에 해당하신다면 먼저 해결을 하셔야합니다.

 

 

자, 설치가 완료되었습니다.

그럼 이클립스를 실행해줍니다.

 

 

아마, 아무것도 건들이지 않으셨다면 이클립스가 켜지는 도중 작업공간 위치를 지정하라는 폼이 나올겁니다.

여기서 작업공간을 아까 압축해제한 포지소스폴더\eclipse 폴더로 지정한 후 확인을 눌러서 실행해줍니다.

 

저번에 모르고 기본값을 잘못 지정해서 이 창이 안뜨실경우에는 아래와같이 파일 - 작업공간 전환 - 기타 에서 전환하실 수 있습니다.

 

다 지정이 되었나요?

그럼 아래와 같은 화면이 나타납니다.

위 화면대로 펼쳐 들어가시면 예제 소스가 존재합니다.

예제소스를 삭제해줍니다.

 

 

그 다음 위와같이 패키지를 생성해줍니다.

 

 

저는 닉네임.모드명 으로 생성하겠습니다.

이때 모르고 패키지를 대문자로 해버렸네요.

패키지는 소문자로 선언하세요.

 

 

그 다음 클래스를 생성해줍니다.

 

 

클래스 생성창에서 다른건 건들이지 말고 이름만 추가해줍니다.

메인 클래스 제작을 할 예정이니, 메인 클래스 이름을 입력해줍니다.

저는 모드이름과 똑같이 생성하였습니다.

 

package Bell.BellCraft;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;

@Mod(modid = BellCraft.MODID, version = BellCraft.VERSION)
public class BellCraft {
	public static final String MODID = "BellCraft";
	public static final String VERSION = "1.0.0.0a"; // a=alpha / b=beta
	
	@EventHandler
	public void Initialize(FMLInitializationEvent event) //초기화
	{
		System.out.println("BellCraft is load."); //방울크래프트 로드 로그 출력
	}
}

 

 

그리고 생성된 클래스에 위와같이 코딩해줍니다.

 

 

그 다음 src/main/resources 폴더mcmod.info 파일을 오른쪽에 드래그&드롭 하여 이클립스로 열어주신 후, 양식에 맞게 수정하시면 됩니다.

 

또, 이번엔 build.gradle 파일을 오른쪽에 드래그&드롭 해서 그룹과 베이스 네임을 모드에 맞게 수정해줍니다.

 

 

그리고 현재 인코딩상태를 확인하기 위해 minecraft 프로젝트를 우클릭하여 특성으로 들어가줍니다.

 

특성에 자원 - 텍스트 파일 인코딩에서 기타를 선택하고 UTF-8로 인코딩해줍니다.

UTF-8로 인코딩하지 않으면, 프로젝트(주석포함)에 한글이 포함되어있으면 빌드시 에러를 내뿜습니다.

 

그 다음 Bell Easy Tool을 사용하여 build를 실행해줍니다.

BET를 사용하지 않으시는분은 명령프롬프트에 gradlew build를 입력해주시면 됩니다.

 

 

 

빌드가 완료되었습니다.

 

 

 

빌드된 모드는 프로젝트 메인폴더\build\libs에 저장됩니다.

이제 이 빌드 된 모드를 포지가 설치된 마인크래프트 클라이언트 mods폴더에 넣고 마인크래프트를 실행하시면 됩니다.

 

+ 파일명 뒤에 숫자는 버전을 나타냅니다.

빌드시 저 버전명을 지정하고 싶으시면 build.gradle에 version 값을 수정해주시면 됩니다.

버전정보는 개발자가 수동으로 변경해주셔야합니다.

 

 

그럼 이제 마인크래프트를 시작해볼까요?

 

마인크래프트를 실행하고 좀 기다리니 로그에 아까 적었던 BellCraft is load. 가 출력되었습니다.

당연히 아시겠지만 앞에 [Bell.BellCraft.BellCraft:Initialize:15] 는 Bell.BellCraft 패키지에 BellCraft 클래스의 Initialize 함수, BellCraft 클래스의 15번째 라인에서 로그 출력이 이뤄졌다는 뜻입니다.

 

 

이제 마인크래프트에 Mods 버튼을 눌러서 들어가보니 아래에 제 모드가 잘 적용이 되어있네요.

근데 모드 정보파일에에 문제가 있다는군요.

그건 다음에 수정하도록 하겠습니다. (..)

이클립스에서 디버깅하시면 모드 정보가 제대로 불러오지 않는거군요.

빌드해서 따로 실행하면 정상적으로 보여집니다.

 

이로써 모드 베이스가 구축되었습니다.

다음은 아이템 추가 등의 강좌를 진행할 예정입니다.

댓글26

  • fldu 2014.11.29 16:01

    이거 버전 1.7.2 버전인가요?
    답글

  • fldu 2014.11.29 16:24

    이거 서버에서도 사용할수 있게 하려면 어떻게 해야 하나요?
    답글

    • Favicon of https://blog.softbell.net BlogIcon [방울] 2014.11.29 16:30 신고

      그 부분은 추후 강좌로 올리도록 하겠습니다.
      저도 지금 배우면서 강좌 올리는거라서요.

      아마 포지사이트에 모더 제공페이지에서 관련정보가 있을것같네요. 영어라서 좀 그렇지만 한번 확인해보세요.

  • 사리 2014.12.27 20:24

    [20:22:29] [main/ERROR]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
    [20:22:29] [main/ERROR]: The minecraft jar file:/C:/Users/user/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.2.1121/forgeBin-1.7.2-10.12.2.1121.jar!/net/minecraft/client/ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
    [20:22:29] [main/ERROR]: FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!
    [20:22:29] [main/ERROR]: Technical information: ClientBrandRetriever was at jar:file:/C:/Users/user/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.2.1121/forgeBin-1.7.2-10.12.2.1121.jar!/net/minecraft/client/ClientBrandRetriever.class, there were 0 certificates for it
    [20:22:29] [main/ERROR]: FML appears to be missing any signature data. This is not a good thing
    [20:22:29] [main/INFO]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper
    [20:22:29] [main/INFO]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
    [20:22:29] [main/INFO]: Launching wrapped minecraft {net.minecraft.client.main.Main}
    [20:22:30] [main/ERROR]: Unable to launch
    java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_71]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?]
    Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) ~[?:1.7.0_71]
    at java.lang.Runtime.loadLibrary0(Runtime.java:849) ~[?:1.7.0_71]
    at java.lang.System.loadLibrary(System.java:1088) ~[?:1.7.0_71]
    at org.lwjgl.Sys$1.run(Sys.java:73) ~[lwjgl-2.9.0.jar:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_71]
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) ~[lwjgl-2.9.0.jar:?]
    at org.lwjgl.Sys.loadLibrary(Sys.java:95) ~[lwjgl-2.9.0.jar:?]
    at org.lwjgl.Sys.<clinit>(Sys.java:112) ~[lwjgl-2.9.0.jar:?]
    at net.minecraft.client.Minecraft.getSystemTime(Minecraft.java:2522) ~[Minecraft.class:?]
    at net.minecraft.client.main.Main.main(SourceFile:36) ~[Main.class:?]
    ... 6 more

    이렇게뜨면서 이클립스안의 마크가안켜지네요
    답글

    • Favicon of https://blog.softbell.net BlogIcon [방울] 2014.12.27 21:38 신고

      The binary patch set is missing.
      라네요.
      설치중 문제가 있는것같습니다.
      제 예상에는 경로에 한글이 포함되어있거나 그런것같네요.

  • 사리 2014.12.27 23:06

    빌드 했는데
    빌드폴더에 libs 폴더가안생깁니다 UTF8로하고 소스안에있는한글있는거 다 영어로도 바꿨고
    했는데주석뒤에있는한글도 오류가나길래 그런것도다지웠구요 ..
    이파일이 전에 포멧해서 외장하드에 이클립스랑자바소스폴더통채로 넣은다음
    포멧후 다시꺼내서 gradlew setup 명령어다시치고 위처럼 한글다제거했는데..;;ㅠㅠ
    답글

  • TenTerns 2015.01.09 23:33

    자바 8버전에서도 구동 가능하나요?

    답글

  • 엠군 2015.01.14 13:30

    1.8 은 여러가지 꽤 다르던데...
    그것도 강좌를..?
    답글

  • ㅠㅠ 2015.03.29 21:30

    저 인스톨이 안됩니다ㅠㅠ
    답글

  • Favicon of https://basixblog.tistory.com BlogIcon Basix 2015.03.30 16:16 신고

    TIP!
    Intelij IDEA 에서 개발시 gradlew setupDecompWorkspace 실행 후 gradlew idea 실행
    문제가 발생했을시 gradlew --refresh-dependencies eclipse 명령어 실행
    답글

  • Favicon of https://basixblog.tistory.com BlogIcon Basix 2015.03.30 17:00 신고

    cpw 가 없다고 뜨네요..
    답글

  • Favicon of http://agor.io BlogIcon yoe 2015.08.22 20:45

    error: error reading D:\■■■\■■■■\forge\mcp\lib\scala-library.jar; error in opening zip file
    1error
    Decompile Exception: 1
    에러가뜨는데 어떻게해야하죠?
    답글

    • Favicon of https://blog.softbell.net BlogIcon [방울] 2015.08.22 20:46 신고

      해당 폴더 경로에 한글이 포함된것으로 보입니다.
      디렉토리 경로에 유니코드문자를 포함하지 않도록 영어 및 숫자로만 경로를 생성한 후 다시 시도해보세요.

  • Favicon of http://agor.io BlogIcon yoe 2015.08.23 14:35

    경로에 한글은 포함되지않았어요 그냥 영어로 프로젝트 폴더를많이만들어서 간단하게 생략한것뿐
    답글

  • 익명 2015.09.09 01:53

    비밀댓글입니다
    답글

    • Favicon of https://blog.softbell.net BlogIcon [방울] 2015.09.16 16:13 신고

      답변이 너무 늦어서 보실련지는 모르겠군요.
      말씀하신부분은 모드 디컴파일링 후 소스 수정 -> 리컴파일을 요구하는 부분입니다.
      해당 부분에 대해서는 아직 다루지 않습니다.

      대부분의 모드들은 해당 모드 컨피그 파일을 살펴보시면 각종 기능은 On/Off 할 수 있는 기능을 제공하니 확인하지 않으셨다면 컨피그 파일을 확인해보세요. 해당 기능을 Off 할 수 있을겁니다.

  • FPS 2015.09.19 13:01

    !SESSION 2015-09-19 12:52:32.793 -----------------------------------------------
    eclipse.buildId=4.5.0.I20150603-2000
    java.version=1.8.0_45
    java.vendor=Oracle Corporation
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ko_KR
    Framework arguments: -product org.eclipse.epp.package.java.product
    Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product

    !ENTRY org.eclipse.core.resources 4 567 2015-09-19 12:52:50.137
    !MESSAGE Could not read the project location for 'Minecraft'.
    !STACK 0
    java.io.UTFDataFormatException: malformed input around byte 20
    at java.io.DataInputStream.readUTF(Unknown Source)
    at java.io.DataInputStream.readUTF(Unknown Source)
    at org.eclipse.core.internal.resources.LocalMetaArea.readPrivateDescription(LocalMetaArea.java:365)
    at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:855)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:882)
    at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:733)
    at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1588)
    at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2386)
    at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2157)
    at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:463)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1515)

    !ENTRY org.eclipse.osgi 4 0 2015-09-19 12:52:50.142
    !MESSAGE An error occurred while automatically activating bundle org.eclipse.core.resources (78).
    !STACK 0
    org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resources.
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:792)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
    Caused by: java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at org.eclipse.core.internal.resources.LocalMetaArea.readPrivateDescription(LocalMetaArea.java:381)
    at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:855)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:882)
    at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:733)
    at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1588)
    at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2386)
    at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2157)
    at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:463)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    Root exception:
    java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at org.eclipse.core.internal.resources.LocalMetaArea.readPrivateDescription(LocalMetaArea.java:381)
    at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:855)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:882)
    at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:733)
    at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1588)
    at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2386)
    at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2157)
    at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:463)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)

    !ENTRY org.eclipse.osgi 4 0 2015-09-19 12:52:50.164
    !MESSAGE Application error
    !STACK 1
    java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContainer
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
    Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.core.resources (78).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 13 more
    Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resources.
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:792)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    ... 22 more
    Caused by: java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at org.eclipse.core.internal.resources.LocalMetaArea.readPrivateDescription(LocalMetaArea.java:381)
    at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:855)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
    at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:882)
    at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:733)
    at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1588)
    at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2386)
    at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2157)
    at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:463)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
    at org.eclipse.osgi.container.Module.doStart(Module.java:571)
    at org.eclipse.osgi.container.Module.start(Module.java:439)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:327)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:398)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:352)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:344)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:140)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)

    답글

    • FPS 2015.09.19 13:04

      이클립스 실행하니까 로그파일을 확인하라는 메세지가 뜨고 종료됩니다. 로그파일에 위와같이 나와있는데 뭐가 정확한 원인인가요?
      명령프롬프트에서도 성공적으로 끝났다는 메세지도 나왔는데
      경로설정하고 이클립스 실행하니까 이러네요.
      forge-1.8-11.14.3.1450-src을 다운받았구요.
      환경변수설정도 다 되어있고 명령프롬프트에서 javac로 확인도했어요.
      원래 이 forge-1.8-11.14.3.1450-src 파일 (폴더) 용량이 22메가 정도하는건가요?

  • yacht 2016.01.29 19:43

    그 음.. 특정 파일에있는 이미지를 전체화면에 띄우게하는 방법은 모르시나요..?
    답글

  • ssaemo 2016.03.12 08:40

    많이 배우고갑니다~

    답글

  • 11 2016.05.06 18:50

    game output?이라는 탭이 안 보이는데 어디있나요?
    전 이클립스에서 RUN 하는데 이렇게 하는게 아닌가요?
    RUN 하면 이상한 MOJANG 이랑 제련하는 그런거 이미지 뜨면서 멈춰서 ㅠㅠ
    답글

  • ram 2021.11.29 10:32

    Task 'setupDevWorkspace' not found in root project 'mod'.
    프로젝트안에 저 명령?이 없다고 뜨는데 어떻해야되나요?
    1.12.2, openjdk 1.8.0_312이렇게 설치는 되어있습니다.
    답글