Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED #219

Open
Ashik55 opened this issue Jan 15, 2024 · 14 comments
Open
Labels
bug Something isn't working

Comments

@Ashik55
Copy link

Ashik55 commented Jan 15, 2024

Environment

Macbook M1

Platforms

Android

Versions

"react": "18.2.0",
"react-native": "0.73.2",
"@react-native-community/clipboard": "^1.5.1",

Description

After installing @react-native-community/clipboard Unable to run the project.
Error : ClipboardModule.java:14: error: cannot find symbol
import com.facebook.react.bridge.ContextBaseJavaModule; ^ symbol: class ContextBaseJavaModule location: package com.facebook.react.bridge

@Ashik55 Ashik55 added the bug Something isn't working label Jan 15, 2024
@RanvijayChouhan12
Copy link

Any Fix for this??

@1999-xinz
Copy link

I had the same problem; The environment is the same as our friends above.

@burakodabas
Copy link

I've been struggling with the same problem since this morning. It took me 2 hours and I still couldn't find a solution.

@Ashik55
Copy link
Author

Ashik55 commented Jan 19, 2024

Currently I am using
"@react-native-clipboard/clipboard": "^1.13.2",
as community/clipboard has problem with android.

@tomamatics
Copy link

@react-native-community/clipboard has been renamed to @react-native-clipboard/clipboard, what means that @react-native-community/clipboard is outdated (last release 3 years ago) and seems not to be compatible with latest react-native anymore.

@1999-xinz
Copy link

I had the same problem; The environment is the same as our friends above.
My problem is solved.
According to the reply from the friend below and the error message I reported, I replaced the Android SDK. The error message finally mentioned that the corresponding version of Android build tools could not be found. Here, I could not find Android build tools 34 and 33. So, I went and reinstalled both versions of the tool and was able to use @react-native clipboard/clipboard as normal.
My react and React-native versions are as follows:
react: "18.2.0",
react-native: "0.73.2"

@micheleflammia
Copy link

My friends, i did some tests.

Maybe the problem is related to the jdk and sdk versions that is used.

as mentioned here: Setting up the development environment

you should have this:

  • Node >= 18
  • JDK 17
  • SDK 33 (at least)

Using this in my environment solved the problem for the last version (1.13.2)

@nusjose
Copy link

nusjose commented Feb 23, 2024

I had the same problem after upgrading RN. I changed path of @react-native-community/clipboard in package.json with react-native-clipboard/clipboard and it worked for me

"@react-native-community/clipboard": "https://github.com/react-native-clipboard/clipboard.git"

@ManojJyaniMudulesSeventeen

"@react-native-clipboard/clipboard": "^1.13.2", you need this package instead of this "@react-native-community/clipboard": this thing work for me

@FouadMagdy01
Copy link

FouadMagdy01 commented Feb 26, 2024

this package is outdated now
the last RN version that was working with this package was 0.72.3
you can use the new renamed package as mentioned above

but if you want a solution for the problem you have you can do the following
go to node_modules/@react-native-community/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java

and replace this file content with this code

/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

package com.reactnativecommunity.clipboard;

import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.Context;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Promise;
import com.facebook.react.module.annotations.ReactModule;

/**
 * A module that allows JS to get/set clipboard contents.
 */
@ReactModule(name = ClipboardModule.NAME)
public class ClipboardModule extends ReactContextBaseJavaModule {

  public ClipboardModule(Context context) {
    super(new ReactApplicationContext(context));
  }

  public static final String NAME = "RNCClipboard";

  @Override
  public String getName() {
    return ClipboardModule.NAME;
  }

  private ClipboardManager getClipboardService() {
    return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
  }

  @ReactMethod
  public void getString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      if (clipData != null && clipData.getItemCount() >= 1) {
        ClipData.Item firstItem = clipboard.getPrimaryClip().getItemAt(0);
        promise.resolve("" + firstItem.getText());
      } else {
        promise.resolve("");
      }
    } catch (Exception e) {
      promise.reject(e);
    }
  }

  @ReactMethod
  public void setString(String text) {
    ClipData clipdata = ClipData.newPlainText(null, text);
    ClipboardManager clipboard = getClipboardService();
    clipboard.setPrimaryClip(clipdata);
  }

  @ReactMethod
  public void hasString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      promise.resolve(clipData != null && clipData.getItemCount() >= 1);
    } catch (Exception e) {
      promise.reject(e);
    }
  }
}

@seetharampullela
Copy link

@FouadMagdy01
Even if we made changes to node_modules we can't push that change to a git repo. So if other team members try to pull my latest changes they again can have the same issue. So how can we handle this?

@kimjisena
Copy link

kimjisena commented Mar 17, 2024

@FouadMagdy01 Even if we made changes to node_modules we can't push that change to a git repo. So if other team members try to pull my latest changes they again can have the same issue. So how can we handle this?

Use the patch-package package to share the changes with your team.

@FouadMagdy01
Copy link

@FouadMagdy01 Even if we made changes to node_modules we can't push that change to a git repo. So if other team members try to pull my latest changes they again can have the same issue. So how can we handle this?

I know that and in most cases it is not the best solution to fix bugs in node modules

But there are some workarounds as @kimjisena mentioned below

@Mario-e777
Copy link

this package is outdated now the last RN version that was working with this package was 0.72.3 you can use the new renamed package as mentioned above

but if you want a solution for the problem you have you can do the following go to node_modules/@react-native-community/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java

and replace this file content with this code

/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

package com.reactnativecommunity.clipboard;

import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.Context;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Promise;
import com.facebook.react.module.annotations.ReactModule;

/**
 * A module that allows JS to get/set clipboard contents.
 */
@ReactModule(name = ClipboardModule.NAME)
public class ClipboardModule extends ReactContextBaseJavaModule {

  public ClipboardModule(Context context) {
    super(new ReactApplicationContext(context));
  }

  public static final String NAME = "RNCClipboard";

  @Override
  public String getName() {
    return ClipboardModule.NAME;
  }

  private ClipboardManager getClipboardService() {
    return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
  }

  @ReactMethod
  public void getString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      if (clipData != null && clipData.getItemCount() >= 1) {
        ClipData.Item firstItem = clipboard.getPrimaryClip().getItemAt(0);
        promise.resolve("" + firstItem.getText());
      } else {
        promise.resolve("");
      }
    } catch (Exception e) {
      promise.reject(e);
    }
  }

  @ReactMethod
  public void setString(String text) {
    ClipData clipdata = ClipData.newPlainText(null, text);
    ClipboardManager clipboard = getClipboardService();
    clipboard.setPrimaryClip(clipdata);
  }

  @ReactMethod
  public void hasString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      promise.resolve(clipData != null && clipData.getItemCount() >= 1);
    } catch (Exception e) {
      promise.reject(e);
    }
  }
}

This worked for me!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests