在Windows 10上安装node-java时出现LNK2001错误

时间:2017-01-20 10:39:47

标签: java node.js npm node-java

我试图在Windows 10上安装node-java https://github.com/joeferner/node-java。我遇到了问题。 我使用32位java 8 jdk但仍然收到LNK2001错误。

C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode, sharing)

C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start>npm --version
3.10.8

node-gyp@3.5.0
node@6.9.1
C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start>npm install java

> java@0.8.0 install C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java
> node-gyp rebuild


C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  java.cpp
  javaObject.cpp
  javaScope.cpp
  methodCallBaton.cpp
  nodeJavaBridge.cpp
  utils.cpp
  win_delay_load_hook.cc
..\src\javaObject.cpp(116): warning C4996: 'v8::Function::NewInstance': was declared deprecated [C:\Users\seven\workspa
ce\silver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(3274): note: see declaration of 'v8::Function::NewInstance'
..\src\javaObject.cpp(349): warning C4996: 'v8::Function::NewInstance': was declared deprecated [C:\Users\seven\workspa
ce\silver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(3274): note: see declaration of 'v8::Function::NewInstance'
..\src\utils.cpp(347): warning C4996: 'v8::Value::ToInt32': was declared deprecated [C:\Users\seven\workspace\silver\de
ployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8202): note: see declaration of 'v8::Value::ToInt32'
..\src\utils.cpp(354): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\d
eployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(897): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\de
ployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(927): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\de
ployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(956): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\de
ployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(983): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\de
ployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(1019): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\d
eployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\java.cpp(1044): warning C4996: 'v8::Value::ToNumber': was declared deprecated [C:\Users\seven\workspace\silver\d
eployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(8166): note: see declaration of 'v8::Value::ToNumber'
..\src\utils.cpp(969): warning C4996: 'v8::Object::GetHiddenValue': was declared deprecated [C:\Users\seven\workspace\s
ilver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(2956): note: see declaration of 'v8::Object::GetHiddenValue'
..\src\utils.cpp(973): warning C4996: 'v8::Object::SetHiddenValue': was declared deprecated [C:\Users\seven\workspace\s
ilver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(2954): note: see declaration of 'v8::Object::SetHiddenValue'
..\src\utils.cpp(977): warning C4996: 'v8::Object::SetHiddenValue': was declared deprecated [C:\Users\seven\workspace\s
ilver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  C:\Users\seven\.node-gyp\6.9.1\include\node\v8.h(2954): note: see declaration of 'v8::Object::SetHiddenValue'
c:\users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\nan\nan_new.h(214): warning C4267: '
argument': conversion from 'size_t' to 'int', possible loss of data (compiling source file ..\src\utils.cpp) [C:\Users\
seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
  ..\src\utils.cpp(750): note: see reference to function template instantiation 'v8::MaybeLocal<v8::String> Nan::New<v8
  ::String,const _Elem*,unsigned __int64>(A0,std::A1)' being compiled
          with
          [
              _Elem=char,
              A0=const char *,
              A1=unsigned __int64
          ]
     Creating library C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java\build\Rel
  ease\nodejavabridge_bindings.lib and object C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\nod
  e_modules\java\build\Release\nodejavabridge_bindings.exp
java.obj : error LNK2001: unresolved external symbol __imp_JNI_CreateJavaVM [C:\Users\seven\workspace\silver\deployment
s\apps\electron-quick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java\build\Release\nodejavabridge_bi
ndings.node : fatal error LNK1120: 1 unresolved externals [C:\Users\seven\workspace\silver\deployments\apps\electron-qu
ick-start\node_modules\java\build\nodejavabridge_bindings.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.14986
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\node_modules\java
gyp ERR! node -v v6.9.1
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm ERR! Windows_NT 10.0.14986
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "java"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE

npm ERR! java@0.8.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the java@0.8.0 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the java package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs java
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls java
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\Users\seven\workspace\silver\deployments\apps\electron-quick-start\npm-debug.log

node-java自述文件表示如果使用64 JDK,我会预期LNK2001,但我使用的是32位版本。

2 个答案:

答案 0 :(得分:2)

尝试强制npm将其安装在32位体系结构中:

image: node

stages:
 - install
 - test
 - compile

cache:
 key: modules
 paths:
  - node_modules/

install:modules:
 stage: install
 cache:
  key: modules
  paths:
    - node_modules/
  after_script:
   - node -v && npm -v
  script:
  - npm i

test:
 stage: test
 cache:
   key: modules
   paths:
     - node_modules/
   policy: pull
 before_script:
  - node -v && npm -v
 script:
- npm run test

compile:
 stage: compile
 cache:
 key: modules
 paths:
   - node_modules/
 policy: pull
 script:
  - npm run build

答案 1 :(得分:-1)

你做过setenv.cmd /Release /x86吗?在admin/cmd中进行上述设置后,它对我有用。